/ / Søk etter rader med spesialtegn i SQL Server

Søk etter rader med spesialtegn i SQL Server

Mens du feilsøker et programmeringsproblem i dagJeg la merke til at du ikke kan bruke et LIKE-søk etter strengkolonner som inneholder spesialtegn som% eller _ uten å bruke en spesiell syntaks. Å finne ut av 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 alle felt som inneholder teksten "100%", så du setter sammen denne spørringen:

VELG * FRA tabellnavn HVOR feltnavn LIKE ‘% 100 %%’

I stedet for hva du ønsket, får du alle radene som inneholder "100" så vel som radene som inneholder "100%".

Problemet her er at SQL Server bruker prosenttegn, understrek og firkantede parenteser som spesialtegn. Du kan ganske enkelt ikke bruke dem som et vanlig tegn i en LIKE-spørring uten å slippe unna dem.

Square Bracket Escape

Du kan omgi% eller _ med firkantede parenteser for å fortelle SQL Server at tegnet inni er et vanlig tegn.

VELG * FRA tabellnavn HVOR feltnavn LIKE ‘% 100 [%]%’

T-SQL ESCAPE syntaks

Alternativt kan du legge ESCAPE-operatøren til spørringen, og legge til et tegn før verdien du vil unnslippe.

VELG * FRA tabellnavn HVOR feltnavn LIKE ‘% 100%%’ ESCAPE ‘’

ESCAPE '' delen av spørringen forteller SQL-motoren om å tolke karakteren etter den som en bokstavelig karakter i stedet for som et jokertegn.

Personlig synes jeg den andre metoden er enklere å håndtere, og du kan bruke den til å unnslippe en firkantet brakett også.