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 je% 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 tablename WHERE fieldname 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 percenta, podčiarkov a hranaté zátvorky ako špeciálne znaky. Jednoducho ich nemôžete používať 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 tablename WHERE fieldname 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 tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’
Časť dotazu "ESCAPE" udáva, že stroj SQL interpretuje znak za znakom ako doslovný znak namiesto zástupného znaku.
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.