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.