Početna » kako da » Pretražite retke s posebnim znakovima u SQL poslužitelju

    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.