sql >> Database >  >> RDS >> Sqlserver

Escape een tekenreeks in SQL Server zodat het veilig is om te gebruiken in LIKE-expressie

Om speciale tekens in een LIKE-uitdrukking te laten ontsnappen, plaatst u ze als voorvoegsel met een escape-teken. Je mag kiezen welke escape-teken je wilt gebruiken met het ESCAPE-sleutelwoord. (MSDN-referentie)

Dit ontsnapt bijvoorbeeld aan het %-symbool, waarbij \ als escape-teken wordt gebruikt:

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

Als u niet weet welke tekens in uw tekenreeks zullen staan ​​en u ze niet als jokertekens wilt behandelen, kunt u alle jokertekens vooraf laten gaan door een escape-teken, bijvoorbeeld:

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

(Merk op dat u ook aan uw escape-teken moet ontsnappen en ervoor moet zorgen dat dit de binnenste replace is zodat u niet ontsnapt aan de toegevoegde van de andere replace verklaringen). Dan kun je zoiets als dit gebruiken:

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

Denk er ook aan om meer ruimte toe te wijzen aan uw @myString-variabele, aangezien deze langer zal worden bij het vervangen van de tekenreeks.



  1. PHP / MySQL bouwboommenu

  2. Hoe kan ik een SQL Server 2008 DateTimeOffset converteren naar een DateTime?

  3. Wat is de beste manier om mijn opgeslagen procedures op de SQL-server te beheren?

  4. SQL 'LIKE'-query met '%' waarbij de zoekcriteria '%' bevatten