sql >> Database teknologi >  >> RDS >> Sqlserver

Escape en streng i SQL Server, så den er sikker at bruge i LIKE udtryk

For at undslippe specialtegn i et LIKE-udtryk, skal du foranstille dem med et escape-tegn. Du kan vælge, hvilken escape char du vil bruge med ESCAPE søgeordet. (MSDN Ref)

For eksempel undgår dette %-symbolet ved at bruge \ som escape-tegn:

select * from table where myfield like '%15\% off%' ESCAPE '\'

Hvis du ikke ved, hvilke tegn der vil være i din streng, og du ikke ønsker at behandle dem som jokertegn, kan du præfikse alle jokertegn med et escape-tegn, f.eks.:

set @myString = replace( 
                replace( 
                replace( 
                replace( @myString
                ,    '\', '\\' )
                ,    '%', '\%' )
                ,    '_', '\_' )
                ,    '[', '\[' )

(Bemærk, at du også skal undslippe dit escape-tegn, og sørg for, at det er den indre replace så du ikke undslipper dem, der er tilføjet fra den anden replace udsagn). Så kan du bruge noget som dette:

select * from table where myfield like '%' + @myString + '%' ESCAPE '\'

Husk også at allokere mere plads til din @myString-variabel, da den bliver længere med strengerstatningen.



  1. Sådan ÆNDRES flere kolonner på én gang i SQL Server

  2. Hvordan gemmer man NULL-værdier i datetime-felter i MySQL?

  3. Sådan forbinder du ekstern MySQL-database i PHP

  4. Hvordan genereres tabel API-pakke i Oracle SQL Developer?