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

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