如何转义下划线字符?
我正在编写类似于以下 where 子句的内容,并希望能够在末尾找到带有 _d 的实际条目。
Where Username Like '%_d'
您可以将通配符模式匹配字符用作文字字符。要将通配符用作文字字符,请将通配符括在方括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的几个示例。
对于您的情况:
... LIKE '%[_]d'
显然@Lasse 解决方案是正确的,但还有另一种方法可以解决您的问题:T-SQL 运算符LIKE
定义了可选的ESCAPE子句,它允许您声明一个字符,该字符会将下一个字符转义到模式中。
对于您的情况,以下 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
这对我有用,只需使用转义
'%\_%'
这些在 SSIS v18.0 中都不适合我,所以我会做这样的事情:
WHERE CHARINDEX('_', thingyoursearching) < 1
..我试图忽略其中带有下划线的字符串。如果您想查找带有下划线的内容,只需将其翻转:
WHERE CHARINDEX('_', thingyoursearching) > 0
Adding [ ]
did the job for me
like '%[\\_]%'