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