Поиск строк со специальными символами в SQL Server

При устранении проблемы с программированием сегодня я заметил, что вы не можете использовать LIKE поиск для строковых столбцов, содержащих специальные символы, такие как% или _, без использования специального синтаксиса. Выяснение проблемы заняло всего несколько минут, но запомнить синтаксис всегда проще, если вы напишите об этом.

Так что да, этот пост предназначен исключительно для моей пользы. Надеюсь, это поможет кому-то еще.

Допустим, вы хотите найти любые поля, содержащие текст «100%», поэтому вы собрали этот запрос:

SELECT * FROM tablename, ГДЕ имя поля LIKE ‘% 100 %%’

Вместо того, что вы хотели, вы получите все строки, которые содержат «100», а также строки, которые содержат «100%».

Проблема здесь заключается в том, что SQL Server использует знак процента, подчеркивание и квадратные скобки в качестве специальных символов. Вы просто не можете использовать их в качестве простого символа в запросе LIKE без их экранирования.

Квадратный кронштейн Escape

Вы можете заключить% или _ в квадратные скобки, чтобы сообщить SQL Server, что символ внутри является обычным символом.

SELECT * FROM tablename ГДЕ имя поля LIKE ‘% 100 [%]%’

Синтаксис T-SQL ESCAPE

Кроме того, вы можете добавить оператор ESCAPE к вашему запросу и добавить символ \ перед значением, которое вы хотите экранировать.

SELECT * FROM tablename, ГДЕ имя поля LIKE ‘% 100 \ %%’ ESCAPE ‘\’

Часть запроса ESCAPE tells \ ’указывает механизму SQL интерпретировать символ после \ как буквальный символ, а не как подстановочный знак.

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

Оцените статью
TutoryBird.Ru
Добавить комментарий