Vyhľadajte riadky so špeciálnymi znakmi v SQL Serveri

Vyhľadajte riadky so špeciálnymi znakmi v SQL Serveri
Vyhľadajte riadky so špeciálnymi znakmi v SQL Serveri

Video: Vyhľadajte riadky so špeciálnymi znakmi v SQL Serveri

Video: Vyhľadajte riadky so špeciálnymi znakmi v SQL Serveri
Video: Rare Body Features Only 1% of People Have - YouTube 2024, Apríl
Anonim

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.

Odporúča: