If-Koubou

Pretraživanje redaka s posebnim znakovima u sustavu SQL Server

Pretraživanje redaka s posebnim znakovima u sustavu SQL Server (Kako da)

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.