如何转义下划线字符?

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

Where Username Like '%_d'
有帮助吗?

解决方案

SQL Server 2000 的 LIKE 的 T-SQL 参考:

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

对于你的情况:

... LIKE '%[_]d'

其他提示

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

对于您的情况,以下 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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top