Домашня » як » Пошук рядків зі спеціальними символами в SQL Server

    Пошук рядків зі спеціальними символами в 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 про інтерпретацію символу після літерального символу замість символьного символу..

    Особисто я вважаю, що другий метод легше вирішувати, і ви можете використовувати його, щоб уникнути квадратної дужки, а також.