如何在SQL Server中转义“_”?

31

我正在尝试在LIKE语句中转义下划线字符。我已经尝试使用ESCAPE关键字,如下所示:

I am trying to escape the underscore character in a LIKE Statement. I have tried to use the ESCAPE keyword as follows:

COLUMNNAME NOT LIKE '%[\_]xyz%' ESCAPE '\'

但它没有起作用。它仍然过滤掉%xyz%,但我真正想要过滤掉的是%_xyz%

如果不使用ESCAPE关键字,还有什么其他方法可以实现呢?

任何帮助都将不胜感激。

3个回答

46

只需要这样就可以:

COLUMNNAME NOT LIKE '%[_]xyz%'

这里不需要使用ESCAPE。你写的代码应该也能正常工作。

如果你确实想要使用ESCAPE,你可以这样写:

columnname NOT LIKE '%\_xyz%' ESCAPE '\';

转义字符的相关文档在这里


1
谢谢,这个方法可行。我不确定之前为什么不行,但现在可以了,非常感谢。 - James Thomas

16

使用方括号 [_]

这对我在SQL Server 2005中有效。

select *
from #table 
where a like '%[_]xyz%'

+1:支持链接:http://sqlserver2000.databases.aspfaq.com/how-do-i-search-for-special-characters-e-g-in-sql-server.html - OMG Ponies

5

不带括号试一下:

COLUMNNAME NOT LIKE '%\_xyz%' ESCAPE '\'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接