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

时间:2012-06-26 20:48:41

标签: sql sql-server regex

我有一个我一直想要的查询,它应该拉出所有不包含我们不想要的字符的行。

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

那应该返回任何不包含

的行
0-9 a-z A-z . : ; ^ & @ \ / ( ) #

但是,无论何时我在下面添加其中一个,都会失败

$ [ ] ?

甚至试图通过\或[[似乎无法正常工作]逃脱它们。我只能访问库存SQL安装。

1 个答案:

答案 0 :(得分:4)

  

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

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

SELECT * FROM yourtable WHERE col LIKE '%x%'

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

SELECT * FROM yourtable WHERE col NOT LIKE '%x%'

因此,您的查询应使用NOT LIKE,因为您需要不包含的行:

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

  

那应该返回任何不包含

的行
0-9 a-z A-z . : ; ^ & @ \ / ( ) #

没有。由于开头为^,它会返回不包含字符的行,但除外。您列出的那些字符是 允许的字符。