Domača » kako » Iščite vrstice s posebnimi znaki v strežniku SQL

    Iščite vrstice s posebnimi znaki v strežniku SQL

    Medtem ko danes odpravljamo težave s programiranjem, sem opazil, da ne morete uporabiti LIKE iskanja za stolpce nizov, ki vsebujejo posebne znake, kot je% ali _ brez uporabe posebne sintakse. Ugotovitev problema je trajala le nekaj minut, a spomin na sintakso je vedno lažja, če pišete o njej.

    Torej, da, to delovno mesto je izključno v mojo korist. Upajmo, da bo to pomagalo tudi nekomu drugemu.

    Recimo, da želite najti vsa polja, ki vsebujejo besedilo »100%«, tako da sestavite to poizvedbo:

    SELECT * FROM tablename WHERE ime polja LIKE '% 100 %%'

    Namesto tega, kar ste želeli, boste dobili vse vrstice, ki vsebujejo »100« in vrstice, ki vsebujejo »100%«.

    Problem je v tem, da strežnik SQL kot znak za odstotke, podčrtaj in oglati oklepaji uporablja posebne znake. Preprosto jih ne morete uporabiti kot navaden znak v poizvedbi LIKE, ne da bi jih pobegnili.

    Kvadratni nosilec

    Lahko obkrožite% ali _ s oglatimi oklepaji, da sporočite SQL strežniku, da je znak znotraj običajnega znaka.

    SELECT * FROM tablename WHERE ime polja LIKE '% 100 [%]%'

    Sintaksa T-SQL ESCAPE

    Lahko pa dodate tudi operaterja ESCAPE na poizvedbo in dodate znak pred vrednostjo, ki jo želite uiti..

    SELECT * FROM tablename WHERE ime_LIKE '% 100%' ESCAPE '\ t

    ESCAPE "del poizvedbe pove pogon SQL, da razlaga znak po besednem znaku namesto kot nadomestni znak.

    Osebno se mi zdi, da je z drugo metodo lažje ravnati in jo lahko uporabite tudi za izhod iz kvadratnega oklepaja.