select *
from table
where column LIKE '%[^0-9a-zA-Z]%'
如何在where子句中包含以下字符也被认为不是“特殊”?
(,./;#:[]{}=-_+)(*^!`\|)
基本上我想要回复一堆西里尔/北欧字符或任何其他有趣的字符。
还有什么区别 选择 * 从表 列LIKE'%[^ 0-9a-zA-Z]%'
和
select *
from table
where column NOT LIKE '%[0-9a-zA-Z]%'
重复:我想找到像这样的东西Dú 而不是大宝。
由于
答案 0 :(得分:1)
你需要用OR concondition扩展你的喜欢..
SELECT *
FROM table
WHERE column LIKE '%[^0-9a-zA-Z]%'
OR column LIKE "%#%"
OR column LIKE "%{%" OR (etc.)
答案 1 :(得分:0)
... LIKE '[[]%'
您可以使用[ ]
围绕特殊字符(或范围)。你不需要逃避结束括号。
答案 2 :(得分:0)
你应该能够简单地将这些字符包含在你已经使用的相同模式中,只需确保在必要时用“\”来逃避每个字符,如下所示:
select *
from table
where column LIKE '%[^0-9a-zA-Z\,\.\/\;\#\:\[\]\{\}\=\-\_\+\)\(\*\^\!\`\\\|]%'
修改强>
为了更好地适应Unicode(即nvarchar
数据类型),有几个选项讨论HERE,其中一个更优雅(IIF你的默认排序规则是ASCII或类似)似乎是使用这样的条件:
select *
from table
where column <> cast(column as varchar(500)) --length should match the base column length
or column LIKE N'%[^0-9a-zA-Z\,\.\/\;\#\:\[\]\{\}\=\-\_\+\)\(\*\^\!\`\\\|]%'
nvarchar值与varchar等价物的比较是识别所有非ascii兼容字符(如Cyrillic)的简单方法,然后LIKE进一步过滤到ASCII字符的子集。似乎为此目的很好地工作。
答案 3 :(得分:0)
... LIKE '[[]%'
您可以使用[ ]
来包围特殊字符(或范围)。您无需逃脱右括号。