2010-02-19 30 views
29

我试图逃避LIKE声明中的下划线字符。我曾尝试使用ESCAPE关键字如下:如何在SQL Server中逸出_

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

,但它不工作。它仍然过滤出%xyz%,当我真的想过滤掉%_xyz%

如果不是ESCAPE关键字,那么该如何实现呢?

任何帮助表示赞赏。

回答

40

只是这应该工作:

COLUMNNAME NOT LIKE '%[_]xyz%' 

您不需要这里的ESCAPE。你写的也应该有效。

如果你想使用ESCAPE你可以这样做:转义字符

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

文档是here

+1

谢谢,这工作。我不知道为什么它以前没有工作,但现在非常感谢。 – 2010-02-19 23:40:38

15

使用brakets [_]

这对我的作品在SQL Server 2005

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

+1:支持链接:http://sqlserver2000.databases.aspfaq.com/how-do-i-search-for-special-characters-eg- in-sql-server.html – 2010-02-20 00:04:19

4

尝试没有括号:

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