Mens du feilsøker et programmeringsproblem i dag, la jeg merke til at du ikke kan bruke LIKE å søke etter strengskolonner som inneholder spesialtegn som% eller _ uten å bruke en spesiell syntaks. Å finne ut problemet tok bare noen få minutter, men det er alltid lettere å huske syntaks hvis du skriver om det.
Så ja, dette innlegget er utelukkende til min fordel. Forhåpentligvis vil det hjelpe noen andre også.
La oss si at du vil finne noen felt som inneholder teksten "100%", så du legger sammen dette spørsmålet:
SELECT * FROM tablename WHERE fieldname LIKE ‘%100%%’
I stedet for det du ville ha, får du alle rader som inneholder "100" og radene som inneholder "100%".
Problemet her er at SQL Server bruker prosenttegnet, understreket og firkantede parenteser som spesialtegn. Du kan rett og slett ikke bruke dem som en vanlig karakter i en LIKE spørring uten å rømme dem.
Square Bracket Escape
Du kan omgir% eller _ med firkantede parentes for å fortelle SQL Server at tegnet inni er et vanlig tegn.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100[%]%’
T-SQL ESCAPE-syntaks
Alternativt kan du legge til ESCAPE-operatøren på forespørselen din, og legge til et tegn før verdien du vil unnslippe.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’
ESCAPE '' delen av spørringen forteller SQL-motoren å tolke tegnet etter som en bokstav i stedet for som jokertegn.
Personlig finner jeg den andre metoden lettere å håndtere, og du kan også bruke den til å unnslippe en firkantbrakett også.