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.