SQL Server 里查询包含下划线的字符串
有一个需求,需要查询SQL Server里一个表中某个字符串类型的字段中包含下划线的记录。很自然会想到这样的代码:
1 | SELECT * FROM MyTable WHERE MyCol LIKE '%_%' |
结果证明这种写法是错误的。原谅我SQL编程的功力已经极大的退化了。原来下划线 _ 在 LIKE 子句中代表“一个”任意字符,而我需要将它作为普通字符查询,怎么做呢?有2种方法:
中括号
万能的中括号 ([、]) 可以做到:
1 | SELECT * FROM MyTable WHERE MyCol LIKE '%[_]%' |
ESCAPE 语句
可以用 ESCAPE 语句指定一个转义字符,然后 LIKE 语句中这个转义符后面的一个字符将作为普通字符处理:
1 | SELECT * FROM MyTable WHERE MyCol LIKE '%\_%' ESCAPE '\' |
完整的例子
1 | CREATE TABLE Test |