sql-如何在文本字段中搜索特定数据?e、 g.我需要包含c1+任何字符(如c1$)的行,而不是另一个数字(如c19)

apeeds0o  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(231)

我需要在数据库中搜索两个特定的值,它们是c1和c5,出现在每一行的注解中。
但是,有些注解包含c128、c523、c100等信息—我不想拉这些注解。
更为复杂的是,有些音符本身包含c1和c5,例如数字后面有空格,但有些音符包含c1和c5,后面有字母,例如c1danny、c5claire、c1run,我确实需要把这些以及那些只说c1和c5的音符都拉出来。
e、 g.数据库

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和堆栈溢出和任何帮助,我可以用什么代码来实现这将是非常感谢。

brc7rcf0

brc7rcf01#

你可以试试这个:

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

相关问题