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

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

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

Видео: Търсене на редове със специални символи в SQL Server
Видео: ЁжЖЖ 19.02.02 Сравнение и отличия звука и спектра сигналов сотовой связи от передаваемых вышкой #МТС - YouTube 2024, Може
Anonim

Докато отстранявах проблема с програмния проблем днес, забелязах, че не можете да използвате търсенето 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 към заявката си и да добавите character пред стойността, която искате да избягате.

SELECT * FROM tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’

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

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

Препоръчано: