“[”没有被归类为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'
答案 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,否则最好不要使用,并且将通配符作为第一个字符是一种不好的做法,因为它会使查询使用表扫描而不是索引。