t-sql LIKE和特殊字符

时间:2009-12-09 18:22:39

标签: tsql unicode sql-like

“[”没有被归类为unicode字符http://en.wikipedia.org/wiki/List_of_Unicode_characters(我的猜测),为什么这不起作用:

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v like  '[x]825' 

2 个答案:

答案 0 :(得分:3)

[]定义模式匹配的字符范围。它在LIKE语句中具有特殊含义。 Here's the documentation for it.

如果您要明确地查找这些字符,则需要将它们转义,例如:

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v LIKE '![x]825' 
       ESCAPE '!'

答案 1 :(得分:1)

[x]对SQL Server具有特定含义。括号用于非常基本的正则表达式。所以你要搜索的是第一个字符包含字母X的位置,当然这不是变量中的第一个字符。

除非您打算使用awildcard,否则最好不要使用,并且将通配符作为第一个字符是一种不好的做法,因为它会使查询使用表扫描而不是索引。