1

“[” 不归类为 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' 
4

2 回答 2

3

[]定义模式匹配的字符范围。它在 LIKE 语句中具有特殊含义。 这是它的文档。

如果您要明确查找这些字符,则需要对它们进行转义,如下所示:

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v LIKE '![x]825' 
       ESCAPE '!'
于 2009-12-09T18:32:32.820 回答
1

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

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

于 2009-12-09T18:33:08.200 回答