如何转义下划线字符?
我正在写类似于下面的where子句,并希望能够在结尾找到_d的实际条目。
Where Username Like '%_d'
如何转义下划线字符?
我正在写类似于下面的where子句,并希望能够在结尾找到_d的实际条目。
Where Username Like '%_d'
当前回答
在SSIS v18.0中,这些都不适合我,所以我会这样做: WHERE CHARINDEX('_', thingyoursearching) < 1..我试图忽略有下划线的字符串。如果你想找到有下划线的东西,只要把它翻转过来: WHERE CHARINDEX('_', thingyoursearching) > 0
其他回答
显然@Lasse解决方案是正确的,但还有另一种方法来解决您的问题:T-SQL操作符LIKE定义了可选的ESCAPE子句,它允许您声明一个将下一个字符转义到模式中的字符。
对于你的情况,下面的WHERE子句是等价的:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
T-SQL参考LIKE:
您可以使用通配符模式匹配字符作为文字字符。若要使用通配符作为文字字符,请将通配符括在括号内。下表显示了使用LIKE关键字和[]通配符的几个示例。
对于你的情况:
... LIKE '%[_]d'
这招对我很管用,用转盘就行 “% \ _ %”
这些解决方案完全有意义。不幸的是,这两种方法都不尽如人意。我没有和它争论,而是想出了一个变通办法:
select *
from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
在SSIS v18.0中,这些都不适合我,所以我会这样做: WHERE CHARINDEX('_', thingyoursearching) < 1..我试图忽略有下划线的字符串。如果你想找到有下划线的东西,只要把它翻转过来: WHERE CHARINDEX('_', thingyoursearching) > 0