Търсете редове със специални знаци в 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 машината да интерпретира символа след буквален символ вместо като заместващ символ..
Лично аз намирам втория метод по-лесен за справяне и можете да го използвате, за да избегнете и квадратна скоба.