Пошук рядків зі спеціальними символами в SQL Server
Під час вирішення проблеми програмування сьогодні я помітив, що ви не можете використовувати пошук LIKE для стовпців рядків, що містять спеціальні символи, такі як% або _, без використання спеціального синтаксису. Визначення проблеми займало всього кілька хвилин, але запам'ятати синтаксис завжди легше, якщо ви пишете про це.
Так що, цей пост є виключно для мене. Сподіваюся, це допоможе комусь ще.
Припустимо, ви хочете знайти будь-які поля, що містять текст "100%", тому ви складаєте цей запит:
SELECT * FROM tablename WHERE поля LIKE '% 100 %%'
Замість того, що ви хотіли, ви отримаєте всі рядки, які містять "100", а також рядки, які містять "100%".
Проблема в тому, що SQL Server використовує знак відсотка, підкреслення та квадратні дужки як спеціальні символи. Ви просто не можете використовувати їх як звичайний символ у запиті LIKE, не виходячи з них.
Квадратний кронштейн бігти
Ви можете оточити% або _ квадратними дужками, щоб повідомити SQL Server, що символ всередині є звичайним символом.
SELECT * FROM tablename WHERE поля LIKE '% 100 [%]%'
Синтаксис T-SQL ESCAPE
Крім того, ви можете додати оператор ESCAPE до вашого запиту і додати символ перед значенням, яке потрібно видалити.
SELECT * FROM tablename WHERE ім'я поля LIKE '% 100%' ESCAPE '\ t
Частина запиту ESCAPE повідомляє двигун SQL про інтерпретацію символу після літерального символу замість символьного символу..
Особисто я вважаю, що другий метод легше вирішувати, і ви можете використовувати його, щоб уникнути квадратної дужки, а також.