Несмотря на то, что сегодня устраняем проблему программирования, я заметил, что вы не можете использовать поиск LIKE для строковых столбцов, содержащих специальные символы, такие как% или _, без использования специального синтаксиса. Выяснение проблемы заняло всего несколько минут, но помнить о синтаксисе всегда проще, если вы напишете об этом.
Так что да, этот пост предназначен исключительно для меня. Надеюсь, это поможет кому-то еще.
Предположим, вы хотите найти любые поля, содержащие текст «100%», поэтому вы можете собрать этот запрос:
SELECT * FROM tablename WHERE fieldname LIKE ‘%100%%’
Вместо того, что вы хотели, вы получите все строки, содержащие «100», а также строки, содержащие «100%».
Проблема здесь в том, что SQL Server использует знак процента, подчеркивание и квадратные скобки как специальные символы. Вы просто не можете использовать их как простой символ в запросе LIKE, не избегая их.
Побег квадратного кронштейна
Вы можете окружать квадратные скобки% или _, чтобы сообщить SQL Server, что символ внутри является обычным символом.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100[%]%’
Синтаксис T-SQL ESCAPE
Кроме того, вы можете добавить оператор ESCAPE в свой запрос и добавить символ перед значением, которое вы хотите избежать.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’
Часть запроса ESCAPE «говорит» SQL-интерпретатору интерпретирует символ после символа «» как буквенного, а не как подстановочный знак.
Лично я считаю, что второй метод легче справиться, и вы можете использовать его, чтобы избежать квадратной скобки.