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