如何转义下划线字符?

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

Where Username Like '%_d'

===============>>#1 票数:481 已采纳

适用于SQL Server 2000的LIKE的T-SQL参考

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

对于您的情况:

... LIKE '%[_]d'

===============>>#2 票数:186

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

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

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

===============>>#3 票数:1

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

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

===============>>#4 票数:1

这对我有用,只需使用转义符'%\\_%'

===============>>#5 票数:0

这些都不适合我在SSIS v18.0中使用,因此我会做这样的事情:

WHERE CHARINDEX('_', thingyoursearching) < 1

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

WHERE CHARINDEX('_', thingyoursearching) > 0

  ask by GateKiller translate from so

未解决问题?本站智能推荐: