/ / Vyhledejte řádky se speciálními znaky na serveru SQL

Hledání řádků se speciálními znaky na serveru SQL

Při odstraňování problémů s programováním dnesVšiml jsem si, že nemůžete použít LIKE hledání řetězcových sloupců obsahujících speciální znaky jako% nebo _ bez použití speciální syntaxe. Zjistit problém trvalo jen pár minut, ale zapamatování syntaxe je vždy snazší, pokud o něm píšete.

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

Řekněme, že chcete najít všechna pole, která obsahují text „100%“, a proto dáte dohromady tento dotaz:

VYBRAJTE * Z tablename KDE jméno pole LIKE ‘% 100 %%’

Místo toho, co jste chtěli, získáte všechny řádky, které obsahují „100“, jakož i řádky, které obsahují „100%“.

Problém je v tom, že SQL Server používá znak procenta, podtržítko a hranaté závorky jako zvláštní znaky. Jednoduše je nemůžete použít jako obyčejnou postavu v dotazu LIKE, aniž byste jim museli uniknout.

Hranatý závorkový útěk

Můžete ohraničit% nebo _ hranatými závorkami a sdělit serveru SQL, že znak uvnitř je běžný znak.

VÝBĚR * Z tablename KDE název pole LIKE ‘% 100 [%]%’

Syntaxe T-SQL ESCAPE

Alternativně můžete k dotazu připojit operátor ESCAPE a přidat hodnotu před hodnotu, kterou chcete uniknout.

VYBRAJTE * Z tablename KDE jméno pole LIKE ‘% 100 %% 'ESCAPE‘ ’

Část dotazu „ESCAPE“ říká stroju SQL, aby interpretoval znak po znaku doslovný, nikoli jako zástupný znak.

Osobně považuji druhou metodu za snazší se vypořádat a můžete ji také použít k úniku z hranaté závorky.