首先,如果这是一个重复的问题,我们深表歉意。我已经尽力搜索但没有成功,我什至无法用关键字正确地表达我的问题!
我的一张桌子有一列Name (nvarchar)
。我想找出哪些行包含特殊字符而不明确列出这些字符。在我的情况下,“特殊”字符意味着任何不在:
a-z A-Z 0-9 _ @ . , ( ) % + -
例如:
Row 1: 'asdf Asdf 0123'
Row 2: 'asdf (Asdf) 012/3'
Row 3: 'zxcv [234]'
Row 4: 'asdf #0123'
我想选择第 2、3 和 4 行。
最简单的方法是包含我不想要的字符,例如方括号和斜线:
SELECT * FROM Table
WHERE Name LIKE '%[\]\[/]%' ESCAPE '\'
这将返回第 2 行和第 3 行,或者如果我使用 NOT LIKE,则返回第 1 行和第 4 行。但是,我还想找到我可能没有想到的其他字符(例如 #)。列出需要的字符 -
SELECT * FROM Table
WHERE Name NOT LIKE '%[a-zA-Z0-9_@. ,()%+-]%'
也不起作用,因为它返回 0 个结果,因为所有行都至少包含 1 个这些字符。
有没有办法限制后一个 LIKE 语句不匹配包含我所需字符的任何字符串,而是只包含所需字符而不包含其他字符的字符串?