在列中查找所有但允许的字符

iar*_*arp 4 regex sql sql-server

我有一个我一直在尝试进行的查询,它应该提取所有不包含我们不想要的字符的行。

SELECT NID FROM NOTES WHERE NOTE LIKE '%[^0-9a-zA-Z#.;:/^\(\)\@\ \  \\\-]%'
Run Code Online (Sandbox Code Playgroud)

那应该返回任何不包含的行

0-9 a-z A-z . : ; ^ & @ \ / ( ) #
Run Code Online (Sandbox Code Playgroud)

但是任何时候我在下面添加其中一个都会失败

$ [ ] ?
Run Code Online (Sandbox Code Playgroud)

即使试图通过 \ 或 [[ 来逃避它们似乎也无法正常工作。我只能访问库存 SQL 安装。

Mar*_*ers 5

它应该拉出所有不包含我们不想要的字符的行。

要查找包含 x您可以使用的行LIKE

SELECT * FROM yourtable WHERE col LIKE '%x%'
Run Code Online (Sandbox Code Playgroud)

要查找不包含的 行,x您可以使用NOT LIKE

SELECT * FROM yourtable WHERE col NOT LIKE '%x%'
Run Code Online (Sandbox Code Playgroud)

所以你的查询应该使用,NOT LIKE因为你想要不包含某些内容的行:

SELECT NID FROM NOTES WHERE NOTE NOT LIKE '%[0-9a-zA-Z#.;:/^\(\)\@\ \  \\\-]%'
Run Code Online (Sandbox Code Playgroud)

那应该返回任何不包含的行

0-9 a-z A-z . : ; ^ & @ \ / ( ) #
Run Code Online (Sandbox Code Playgroud)

不。由于^在开始,它返回不包含除那些字符之外的行的行。您列出的那些字符允许的字符。