Pretražite retke s posebnim znakovima u SQL poslužitelju
Prilikom rješavanja problema s programiranjem danas sam primijetio da LIKE pretraživanje ne može koristiti za stupce koji sadrže posebne znakove poput% ili _ bez upotrebe posebne sintakse. Pronalaženje problema trajalo je samo nekoliko minuta, ali sjećanje na sintaksu je uvijek lakše ako pišete o tome.
Dakle, da, ovaj post je isključivo u moju korist. Nadam se da će to pomoći i nekome drugome.
Recimo da želite pronaći polja koja sadrže tekst "100%", tako da sastavite ovaj upit:
SELECT * FROM tablename WHERE ime polja LIKE '% 100 %%'
Umjesto onoga što ste htjeli, dobit ćete sve retke koji sadrže "100" kao i retke koji sadrže "100%".
Problem je u tome što SQL Server koristi znakove postotka, podvlaku i uglate zagrade kao posebne znakove. Jednostavno ih ne možete koristiti kao običan znak u LIKE upitu bez izbjegavanja.
Bijeli kvadratni zagrada
Možete okružiti% ili _ s uglatim zagradama da biste SQL Serveru rekli da je znak unutar njega pravilan znak.
SELECT * FROM tablename WHERE polje LIKE '% 100 [%]%'
T-SQL ESCAPE sintaksa
Alternativno, možete dodati ESCAPE operator na svoj upit i dodati znak ispred vrijednosti koju želite pobjeći.
SELECT * FROM tablename WHERE polje LIKE '% 100%' ESCAPE '\ t
ESCAPE-ov dio upita govori SQL stroju da interpretira znak nakon slova kao umjesto zamjenskog znaka.
Osobno smatram da je druga metoda lakša za rješavanje, a možete je koristiti i da biste izbjegli kvadratnu zagradu.