Domovská » jak » Vyhledávání řádků se speciálními znaky v SQL Serveru

    Vyhledávání řádků se speciálními znaky v SQL Serveru

    Při řešení problému s programováním jsem si dnes všiml, že nelze použít hledání LIKE pro sloupce řetězce obsahující speciální znaky, jako je% nebo _, aniž byste použili speciální syntaxi. Vypracování problému trvalo jen několik minut, ale zapamatování syntaxe je vždy snadnější, pokud o něm píšete.

    Takže ano, tento příspěvek je výhradně 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 tento dotaz sestavujete takto:

    SELECT * FROM název tabulky WHERE název pole LIKE '% 100 %%'

    Namísto toho, co jste chtěli, získáte všechny řádky, které obsahují "100", stejně jako řádky obsahující "100%".

    Problém je, že SQL Server používá znaky procenta, podtržítka a hranaté závorky jako zvláštní znaky. Jednoduše je nemůžete použít jako obyčejný znak v dotazu LIKE, aniž byste je unikli.

    Úhel náměstí

    Můžete obklopit% nebo _ pomocí hranatých závorek SQL serveru, že znak uvnitř je pravidelný znak.

    SELECT * FROM název tabulky WHERE název pole LIKE '% 100 [%]%'

    Syntaxe T-SQL ESCAPE

    Případně můžete připojit operátor ESCAPE k dotazu a přidat hodnotu \ before hodnota, kterou chcete uniknout.

    SELECT * FROM název tabulky WHERE název pole LIKE '% 100 \ %%' ESCAPE '\'

    Část dotazu ESCAPE '' říká, že stroj SQL interpretuje znak za znak \ \ jako doslovný znak namísto jako zástupný znak.

    Osobně se jedná o druhou metodu, s níž lze lépe jednat, a můžete ji použít také k tomu, abyste unikli hranatou konzolu.