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

Ескейпиране на специални символи в оператор SQL LIKE с помощта на sql параметри

Имате две възможности:

  • оградете ги в [ и ] . И така:

    where pattern like '[%]'
    

    Търси знака за процент. Пълен списък със знаци за екраниране - '_', '%', '[', ']' със съответните замествания '[_]', '[%]', '[[]', '[]]' . Примерен код може да бъде намерен в Ескранирането на символа за екраниране не работи – SQL оператор LIKE

  • използвайте екраниращ знак, който е малко вероятно да бъде в низа, като обратна отметка:

    where pattern like '`%' escape '`'
    

    (Вижте синтаксиса в MSDN - LIKE (Transact-SQL) .)

И в двата случая предлагам да направите замяната в приложния слой, но можете да го направите и в SQL, ако наистина искате:

where pattern like replace(@pattern, '%', '[%]')

И предоставянето на достъп на крайния потребител до заместващи символи може да е добро нещо по отношение на потребителския интерфейс.

Забележка:има още няколко специални знака '-' и '^' в заявката LIKE, но не е необходимо да бъдат екранирани, ако вече екранирате '[' и ']' .



  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 2008?

  2. JPA съставен първичен ключ

  3. Стандартни низове за формат на дата/час, поддържани от FORMAT() в SQL Server

  4. Структурата на обекта се зарежда много бавно за първи път след всяка компилация

  5. Как да пренапишем Е РАЗЛИЧНО ОТ и НЕ Е РАЗЛИЧНО ОТ?