SQL - 如何在文本字段中搜索特定数据? 例如,我需要包含 C1 + 任何字符的行,例如 C1$ 而不是另一个数字,例



我需要在数据库中搜索两个特定的值,它们是出现在每行注释中的C1和C5。

但是,有些笔记包含诸如 C128、C523、C100 之类的信息——我不想拉这些。

更复杂的是,有些音符本身包含 C1 和 C5,例如在数字后面直接有一个空格,但有些音符包含 C1 和 C5,字母紧跟在它们后面,例如 C1DANNY、C5CLAIRE、C1RUN – 我确实需要拉这些以及那些只说 C1 和 C5 的音符。

例如数据库

ID  Notes
1   C1
2   C128
3   C5
4   C1
5   C1DANNY
6   C25
7   C1RUN
8   C10
9   C523
10  C5!

所以从上面的数据库中,我只想拉行:1、3、4、5、7 和 10。

我不想拉任何在第二个数字之后有数字的东西,例如上面的第 8 行。我确实想提取除第二个数字之后的数字(例如第 3 行和第 10 行(之外的任何字符。

我还应该提到我一直在阅读我可以在这里使用哪些通配符 https://www.w3schools.com/sql/sql_wildcards.asp 但我觉得我可能需要使用 IF 语句来循环并精确检查每个注释中包含的内容,但数据库非常大(数十万行(。

以前的工作人员已经编写了一些代码。有问题的代码是:

(
esl.log_text LIKE 'C1%' OR
esl.log_text LIKE 'C5%' OR
esl.log_text LIKE '%' + CHAR(10) + 'C1%' OR
esl.log_text LIKE '%' + CHAR(10) + 'C5%' OR
esl.log_text LIKE '%' + CHAR(13) + 'C1%' OR
esl.log_text LIKE '%' + CHAR(13) + 'C5%'
)

不幸的是,这似乎是拉动包括C10的线。 我是SQL和Stack Overflow的新手,任何关于我可以使用什么代码来实现这一点的帮助将不胜感激。

你可以试试这个:

SELECT Notes
FROM dbo.Testing_Code AS T0
WHERE (LEFT(Notes, 2) IN ('C1', 'C5')) AND (ISNUMERIC(SUBSTRING(Notes, 3, 20)) = 0)

相关内容

最新更新