Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Екраниране на низ в SQL Server, така че да е безопасен за използване в израза LIKE

За да избягвате специални символи в израз LIKE, вие ги поставяте префикс с escape-символ. Можете да изберете кой escape char да използвате с ключовата дума ESCAPE. (MSDN Ref)

Например това избягва символа %, като се използва \ като escape char:

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

Ако не знаете какви знаци ще бъдат във вашия низ и не искате да ги третирате като заместващи знаци, можете да поставите префикс към всички заместващи знаци с escape char, напр.:

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

(Обърнете внимание, че трябва да екранирате и своя escape char и се уверете, че това е вътрешният replace така че да не избягате от добавените от другия replace изявления). След това можете да използвате нещо подобно:

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

Също така не забравяйте да отделите повече място за вашата променлива @myString, тъй като тя ще стане по-дълга със замяната на низа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server използва висок процесор при търсене в nvarchar низове

  2. Свързване на вашето основно приложение на ASP.NET към локален екземпляр на SQLServer

  3. Върнете основния тип данни от стойност на SQL_Variant в SQL Server

  4. SSMS вече се предлага с Azure Data Studio

  5. Проверете дали таблицата съществува в SQL Server