如何在模式匹配中添加破折号

Phi*_*enn 7 sql-server

这有效:

select Name
from Table
WHERE Name like '%[^0-9A-Za-z]%'
Run Code Online (Sandbox Code Playgroud)

但现在我还需要将短划线字符添加到标准中.

dav*_*vek 10

使用

...ESCAPE '\'
Run Code Online (Sandbox Code Playgroud)

例如

WHERE Name like '%[^0-9A-Za-z\-]%' ESCAPE '\'
Run Code Online (Sandbox Code Playgroud)

将最终的" - "视为文字.


Pon*_*ife 6

除非它是范围的一部分,否则连字符不是LIKE模式中的特殊字符,因此您可以将其添加到模式中,例如:

select 
        [char]
from
    (
    select 'a' as 'char' union 
    select '-' union 
    select '$' union
    select '7'
    ) dt
where 
    [char] like '%[^A-Za-z0-9-]%'
Run Code Online (Sandbox Code Playgroud)

  • 措辞略有不同,除非连字符是集合中的第一个或最后一个字符,否则它“定义”一个范围,因此要按字面意思处理它,它必须是第一个或最后一个字符。 (2认同)