Úvodná » ako » Vyhľadajte riadky so špeciálnymi znakmi v systéme SQL Server

    Vyhľadajte riadky so špeciálnymi znakmi v systéme SQL Server

    Pri odstraňovaní problémov s programovaním som si všimol, že nemôžete použiť vyhľadávanie LIKE pre stĺpce reťazcov obsahujúce špeciálne znaky ako% alebo _ bez použitia špeciálnej syntaxe. Zistenie problému trvalo iba niekoľko minút, ale spomienka na syntax je vždy jednoduchšia, ak o tom píšete.

    Takže áno, tento príspevok je výhradne v mojom prospechu. Dúfajme, že to pomôže niekomu inému.

    Povedzme, že chcete nájsť ľubovoľné polia, ktoré obsahujú text "100%", takže tento dopyt spojíte:

    SELECT * FROM názov tabuľky WHERE názov poľa LIKE '% 100 %%'

    Namiesto toho, čo ste chceli, dostanete všetky riadky, ktoré obsahujú "100", rovnako ako riadky, ktoré obsahujú "100%".

    Problémom je, že SQL Server používa znaky percent, podčiarknutie a hranaté zátvorky ako špeciálne znaky. Jednoducho ich nemôžete použiť ako obyčajný znak v dotaze LIKE bez toho, aby ste ich unikli.

    Námestie Bracket Escape

    Môžete obklopiť% alebo _ s hranatými zátvorkami, aby SQL Server uviedol, že znak vnútri je bežný znak.

    SELECT * FROM názov tabuľky WHERE názov poľa LIKE '% 100 [%]%'

    Syntax T-SQL ESCAPE

    Prípadne môžete pridať operátora ESCAPE do svojho dotazu a pridať znak pred hodnotu, ktorú chcete uniknúť.

    SELECT * FROM názov tabuľky WHERE názov poľa LIKE '% 100 \ %%' ESCAPE '\'

    Časť dotazu ESCAPE "vysvetľuje motoru SQL, že interpretuje znak za znakom \ ako písaný namiesto ako zástupný znak.

    Osobne môžem ľahšie vyriešiť druhú metódu a môžete ju použiť aj na to, aby ste unikli štvorcovým konzolám.