我想检查列中有正则表达式的特殊符号,但不是所有特殊符号。我要所有不是字母,数字和,+。-&(空白) .I的签名,试一试
where column like '%[^((a-z)(A-Z)(0-9)(,\+\.\-)(\&)( ))]%'就像这样
where column like '%[^0-9a-zA-Z ,\-+\.\& ]%'但是,如果我尝试这个说法,我会得到字符串-和-和斯派齐尔空白。
result1:'t-est regex‘ result2:‘TestJ。‘
你知道为什么吗?
来寻求帮助。
发布于 2018-04-17 10:33:13
类算子没有完全使用regex语法。简单多了。
但有些事情仍然是可能的。
这样就能得到你想要的:
where [column] like '%[^A-Za-z0-9 &.,+-]%'注意,类否定式^确实可以工作。
最好将-放在类的末尾。因此,将其用于一系列字符是没有错的。
没有类似的捕获组的概念,所以(和)被删除了。
但是,如果您也希望类似忽略括号,只需将它们添加到字符类中即可。
(即使在regex中,字符类中也没有捕获组)
当字符字段的排序规则不区分大小写时,类似操作是不区分大小写的.
这似乎是大多数数据库的默认设置。
因此,大多数情况下,LIKE '%[A-Z]%'和LIKE '%[A-Za-z]%'的行为都是一样的。
示例片段:
-- using a Case-Sensitive collation for the varchar.
declare @T table (id int identity(1,1), col varchar(30) COLLATE Latin1_General_CS_AS);
insert into @T (col) values
('abc123'),
('ABC & 123'),
('abc123 &.,+-'),
('abc-123 #');
select * from @T where col like '%[^A-Za-z0-9 &.,+-]%';返回:
id col
-- ---------
4 abc-123 #https://stackoverflow.com/questions/49874663
复制相似问题