“[” 不归类为 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'
“[” 不归类为 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'
[]
定义模式匹配的字符范围。它在 LIKE 语句中具有特殊含义。 这是它的文档。
如果您要明确查找这些字符,则需要对它们进行转义,如下所示:
declare @v nvarchar(255)
set @v = '[x]825'
select 1
where @v LIKE '![x]825'
ESCAPE '!'
[x] 对 SQL server 有特定的含义。括号用于非常基本的正则表达式。所以您要搜索的是第一个字符包含字母 X 的位置,当然这不是变量中的第一个字符。
除非您打算使用通配符,否则最好不要使用 like,并且将通配符作为第一个字符是一种不好的做法,因为它会使查询使用表扫描而不是索引。