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.