我需要在数据库中搜索两个特定值,即 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)
关于mysql - SQL - 如何在文本字段中搜索特定数据?例如。我需要包含 C1 + 任何字符的行,例如C1$ 不是另一个号码,例如C19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52162946/