SQL Server转义下划线


338

如何转义下划线字符?

我正在编写类似以下where子句的内容,并希望能够在末尾找到_d的实际条目。

Where Username Like '%_d'

Answers:


523

T-SQL参考LIKE

您可以将通配符模式匹配字符用作文字字符。要将通配符用作文字字符,请将通配符括在方括号中。下表显示了几个使用LIKE关键字和[]通配符的示例。

对于您的情况:

... LIKE '%[_]d'

天啊!...如果仍然无法使用,请确保您的专栏位置正确。
詹斯·弗兰德森

198

显然,@ Lasse解决方案是正确的,但是还有另一种解决问题的方法:T-SQL运算符LIKE定义了可选的ESCAPE子句,该子句使您可以声明一个字符,该字符将下一个字符转义到模式中。

对于您的情况,以下WHERE子句是等效的:

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

42
完整说明一下:该ESCAPE子句是SQL标准的一部分,将在任何DBMS上运行,而不仅仅是SQL Server。
a_horse_with_no_name

2

这些解决方案完全有意义。不幸的是,没有一个对我有用。我没有尝试麻烦,而是进行了以下工作:

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name


0

在SSIS v18.0中,这些都不对我有用,所以我会做这样的事情:

WHERE CHARINDEX('_', thingyoursearching) < 1

..我试图忽略其中带有下划线的字符串。如果要查找带有下划线的内容,只需翻转一下即可:

WHERE CHARINDEX('_', thingyoursearching) > 0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.