select *
from table
where column LIKE '%[^0-9a-zA-Z]%'在where子句中,如何将以下字符也视为“特殊”字符?
(,./;#:[]{}=-_+)(*^!`\|)基本上,我想返回一堆西里尔字母/北欧字符或任何其他有趣的字符。
此外,select * from表中的‘%^0-9a-zA%’列有什么区别?
和
select *
from table
where column NOT LIKE '%[0-9a-zA-Z]%'再来一遍:我想找到类似于Dƒ.的东西,而不是Dafao。
谢谢
发布于 2016-08-26 14:39:50
你需要用或条件来扩展你的同类。
SELECT *
FROM table
WHERE column LIKE '%[^0-9a-zA-Z]%'
OR column LIKE "%#%"
OR column LIKE "%{%" OR (etc.)发布于 2016-08-26 18:19:17
您应该能够简单地将这些字符包含在您已经拥有的模式中,只需确保在必要时用"\“对每个字符进行转义,如下所示:
select *
from table
where column LIKE '%[^0-9a-zA-Z\,\.\/\;\#\:\[\]\{\}\=\-\_\+\)\(\*\^\!\`\\\|]%'编辑:
为了更好地适应Unicode (即nvarchar数据类型),有几个选项讨论了HERE,其中一个比较优雅的选项(您的默认排序规则是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等效值进行比较是一种简单的方法,可以识别所有不兼容的字符(如Cyrillic),然后再将类似的过滤器深入到ASCII字符的子集。似乎对此效果很好。
发布于 2019-06-29 10:20:21
... LIKE '[[]%'您可以使用[ ]包围一个特殊字符(或范围)。你不需要逃离关闭支架。
https://stackoverflow.com/questions/39168561
复制相似问题