sql >> Base de Datos >  >> RDS >> Sqlserver

Escape de caracteres especiales en una declaración SQL LIKE usando parámetros sql

Tienes dos opciones:

  • encerrarlos en [ y ] . Entonces:

    where pattern like '[%]'
    

    Busca el carácter de porcentaje. Lista completa de caracteres para escapar - '_', '%', '[', ']' con los reemplazos correspondientes '[_]', '[%]', '[[]', '[]]' . El código de muestra se puede encontrar en Escapar del carácter de escape no funciona:operador SQL LIKE

  • use un carácter de escape que es poco probable que esté en la cadena, como un acento grave:

    where pattern like '`%' escape '`'
    

    (Vea la sintaxis en MSDN - LIKE (Transact-SQL) .)

En ambos casos, le sugiero que haga la sustitución en la capa de la aplicación, pero también puede hacerlo en SQL si realmente lo desea:

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

Y, dar acceso al usuario final a los comodines puede ser algo bueno en términos de la interfaz de usuario.

Nota:hay un par de caracteres especiales más '-' y '^' en la consulta LIKE, pero no es necesario escapar si ya está escapando '[' y ']' .