T-SQL, как и специальные символы

"[" не относится к юникодному символу 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 ответа

Решение

[] определяет диапазон символов для сопоставления с образцом. Это имеет особое значение в заявлении LIKE. Вот документация для этого.

Если вы ищете эти символы явно, вам нужно их экранировать, например так:

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

[x] имеет особое значение для сервера SQL. Скобки используются для очень простых регулярных выражений. Так что вы ищете, где первый символ содержит букву X и, конечно, это не первый символ в вашей переменной.

Лучше не использовать подобное, если только вы не собираетесь использовать awildcard, и плохой практикой является использование подстановочного знака в качестве первого символа, так как запрос заставляет использовать сканирование таблицы вместо индекса.

Другие вопросы по тегам