题
如何转义下划线字符?
我正在编写类似以下 where 子句的内容,并希望能够找到末尾带有 _d 的实际条目。
Where Username Like '%_d'
解决方案
SQL Server 2000 的 LIKE 的 T-SQL 参考:
您可以使用通配符模式匹配字符作为文字字符。要将通配符用作文字字符,请将通配符括在方括号中。该表显示了使用 LIKE 关键字和 [ ] 通配符的几个示例。
对于你的情况:
... LIKE '%[_]d'
其他提示
显然@Lasse 解决方案是正确的,但是还有另一种方法可以解决您的问题:T-SQL 运算符 LIKE
定义可选的 逃脱 子句,它允许您声明一个字符,该字符会将下一个字符转义到模式中。
对于您的情况,以下 WHERE 子句是等效的:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
这些解决方案完全有道理。不幸的是,两者都没有像预期的那样对我有用。我没有尝试解决这个问题,而是采取了解决办法:
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
这对我有用,只需使用转义'%\_%'
不隶属于 StackOverflow