Gat*_*ler 307 sql-server
如何逃避下划线角色?
我正在写类似下面的where子句,并希望能够在最后找到_d的实际条目.
Where Username Like '%_d'
Run Code Online (Sandbox Code Playgroud)
ang*_*son 482
适用于SQL Server 2000的LIKE的T-SQL参考:
您可以使用通配符模式匹配字符作为文字字符.要将通配符用作文字字符,请将通配符括在括号中.该表显示了使用LIKE关键字和[]通配符的几个示例.
对于你的情况:
... LIKE '%[_]d'
Run Code Online (Sandbox Code Playgroud)
Ger*_*ima 187
显然@Lasse解决方案是正确的,但还有另一种方法可以解决您的问题:T-SQL运算符LIKE定义了可选的ESCAPE子句,它允许您声明一个将下一个字符转义到模式中的字符.
对于您的情况,以下WHERE子句是等效的:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
Run Code Online (Sandbox Code Playgroud)
这些解决方案完全有道理。不幸的是,两者都没有像预期的那样对我有用。我没有尝试解决这个问题,而是采取了解决办法:
select *
from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
Run Code Online (Sandbox Code Playgroud)
小智 8
我有一个类似的问题,使用类似的模式'%_%'不起作用 - 正如问题所示:-)
使用'%\_%'也不起作用,因为这第一个\被解释为“在类似之前”。
使用'%\\_%'作品。(\\双反斜杠)首先转换为单\(反斜杠),然后以类似的模式使用。