【发布时间】:2015-05-29 23:30:52
【问题描述】:
这行得通:
select Name
from Table
WHERE Name like '%[^0-9A-Za-z]%'
但现在我还需要将破折号添加到条件中。
【问题讨论】:
标签: sql-server
这行得通:
select Name
from Table
WHERE Name like '%[^0-9A-Za-z]%'
但现在我还需要将破折号添加到条件中。
【问题讨论】:
标签: sql-server
使用
...ESCAPE '\'
例如
WHERE Name like '%[^0-9A-Za-z\-]%' ESCAPE '\'
将最后的“-”视为文字。
【讨论】:
除非它是范围的一部分,否则连字符不是LIKE 模式中的特殊字符,因此您可以将其添加到您的模式中,例如:
select
[char]
from
(
select 'a' as 'char' union
select '-' union
select '$' union
select '7'
) dt
where
[char] like '%[^A-Za-z0-9-]%'
【讨论】:
not like '%[^A-Za-z0-9-]%' 没有按预期工作,但not like '%[^A-Za-z0-9\-]%' escape '\' 可以。好奇为什么