Sql server 如何在模式匹配中添加破折号
这项工作:Sql server 如何在模式匹配中添加破折号,sql-server,Sql Server,这项工作: select Name from Table WHERE Name like '%[^0-9A-Za-z]%' 但是现在我还需要将破折号字符添加到条件中。使用 ...ESCAPE '\' e、 g 将最后一个“-”作为文字处理。除非它是范围的一部分,否则连字符在模式中不是特殊字符,因此您可以将其添加到您的模式中,例如: select [char] from ( select 'a' as 'char' union select '-'
select Name
from Table
WHERE Name like '%[^0-9A-Za-z]%'
但是现在我还需要将破折号字符添加到条件中。使用
...ESCAPE '\'
e、 g
将最后一个“-”作为文字处理。除非它是范围的一部分,否则连字符在
模式中不是特殊字符,因此您可以将其添加到您的模式中,例如:
select
[char]
from
(
select 'a' as 'char' union
select '-' union
select '$' union
select '7'
) dt
where
[char] like '%[^A-Za-z0-9-]%'
关于转义有一些有趣的讨论。措辞略有不同,除非连字符是集合中的第一个或最后一个字符,否则它定义了一个范围,因此要按字面意义处理,它必须是第一个或最后一个字符。Rhys Jones的评论很关键,[^a-Za-z0-9-\]将失败
select
[char]
from
(
select 'a' as 'char' union
select '-' union
select '$' union
select '7'
) dt
where
[char] like '%[^A-Za-z0-9-]%'