If-Koubou

Търсене на редове със специални символи в SQL Server

Търсене на редове със специални символи в SQL Server (Как да)

Докато отстранявах проблема с програмния проблем днес, забелязах, че не можете да използвате търсенето LIKE за низови колони, съдържащи специални знаци като% или _, без да използвате специален синтаксис. Изчисляването на проблема отне само няколко минути, но си припомняте синтаксиса винаги е по-лесно, ако пишете за него.

Така че, това мнение е само в моя полза. Надяваме се, че ще помогне и на някой друг.

Да приемем, че искате да намерите полета, съдържащи текста "100%", така че да съберете тази заявка:

SELECT * FROM име на таблица WHERE име на поле LIKE '% 100 %%'

Вместо това, което искате, ще получите всички редове, съдържащи "100", както и редове, които съдържат "100%".

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

Избягай от квадратната скоба

Можете да заобиколите% или _ с квадратни скоби, за да кажете на SQL Server, че вътрешният символ е обикновен знак.

SELECT * FROM име на таблица WHERE Име на поле LIKE '% 100 [%]%'

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

Друга възможност е да добавите оператора ESCAPE към заявката си и да добавите \ character пред стойността, която искате да избягате.

SELECT * FROM име на таблица WHERE име на поле LIKE '% 100 \ %%' ESCAPE '\'

Частта "ESCAPE" на заявката указва на SQL двигателя да интерпретира знака след \ като буквален знак, а не като заместващ символ.

Лично аз намирам, че втория метод е по-лесен за работа и можете да го използвате, за да избягате и от квадратна конзола.