Dok rješavam programski problem danas, primijetio sam da ne možete koristiti LIKE pretraživanje za nizove stupaca koji sadrže posebne znakove poput% ili _ bez korištenja posebne sintakse. Shvaćanje problema trebalo je samo nekoliko minuta, no sjećanje na sintaksu uvijek je lakše ako pisati o tome.
Dakle, ovaj post je isključivo za moju korist. Nadam se da će to pomoći i drugima.
Pretpostavimo da želite pronaći sva polja koja sadrže tekst "100%", tako da sastavite ovaj upit:
SELECT * FROM tablename WHERE naziv polja kao '% 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 upotrebljava oznake postotka, podvlačnost i kvadratne zagrade kao posebne znakove. Jednostavno ih ne možete koristiti kao običan lik u LIKE upitu bez da ih izbjegavate.
Trč
Možete okružiti% ili _ s kvadratnim zagradama da biste reći da je SQL Server taj znak unutar je redovni znak.
SELECT * FROM tablename WHERE naziv polja kao '% 100 [%]%'
T-SQL ESCAPE sintaksa
Alternativno, možete dodati operatera ESCAPE na svoj upit i dodati \ znak prije vrijednosti koju želite pobjeći.
SELECT * FROM tablename WHERE naziv polja kao '% 100 \ %%' ESCAPE '\'
ESCAPE '\' dio upita govori da SQL motor tumači znak nakon \ kao doslovni znak umjesto kao zamjenski znak.
Osobno smatram da je druga metoda lakša za rješavanje, a možete ga koristiti i za izbjegavanje kvadratnog zagrada.