Søk etter rader med spesialtegn i SQL Server
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 enklere å 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:
VELG * FRA tabellnavn WHERE feltnavn 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 tegn 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.
VELG * FRA tabellnavn WHERE feltnavn 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.
VELG * FRA tabellnavn WHERE feltnavn 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å.