samedi 31 mars 2012

Hledat řádků se speciálními znaky v SQL Server

Při odstraňování problémů programovací problém dnes jsem si všiml, že nemůžete použít LIKE hledání řetězec sloupce obsahující speciální znaky jako%, _ nebo bez použití speciální syntaxe. Zjistit problém, trvalo jen pár minut, ale pamatovat syntax je vždy jednodušší, když si o tom psát.

Takže ano, tento příspěvek je pouze pro můj prospěch. Doufejme, že to pomůže i někomu jinému.

Řekněme, že chcete najít pole, která obsahují text "100%", takže dát dohromady tento dotaz:

SELECT * FROM tablename KDE fieldname LIKE '% 100%% "

Místo toho, co jste chtěli, dostanete všechny řádky, které obsahují "100''stejně jako řádky, které obsahují" 100% ".

Problém je, že SQL Server používá znak procent, podtržítko a hranaté závorky jako speciální znaky. Prostě nelze použít jako běžný znak v jako dotaz bez úniku nich.

Hranatá závorka Útěk

Můžete surround% a _ hranatými závorkami říct, SQL Server, že charakter uvnitř je pravidelný charakter.

SELECT * FROM tablename KDE fieldname LIKE '% 100 [%]%'

T-SQL Syntaxe ESCAPE

Případně můžete připojit ESCAPE operátor na dotaz, a přidejte charakter, než je hodnota, kterou chcete uniknout.

SELECT * FROM tablename KDE fieldname LIKE '% 100 %%' ESCAPE ''

ESCAPE '' část dotazu SQL motor řekne o výklad znaku za jako doslovný charakter a nikoli jako zástupný znak.

Osobně mi připadá druhá metoda jednodušší řešení, a můžete ho použít k útěku hranatá závorka také.

Aucun commentaire:

Enregistrer un commentaire