Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Escapando caracteres especiais em uma instrução SQL LIKE usando parâmetros sql


Você tem duas opções:

  • coloque-os em [ e ] . Então:
    where pattern like '[%]'
    

    Procura o caractere de porcentagem. Lista completa de caracteres para escape - '_', '%', '[', ']' com substituições correspondentes '[_]', '[%]', '[[]', '[]]' . O código de exemplo pode ser encontrado em O escape do caractere de escape não funciona – Operador SQL LIKE

  • use um caractere de escape que provavelmente não esteja na string, como um backtick:
    where pattern like '`%' escape '`'
    

    (Consulte a sintaxe no MSDN - LIKE (Transact-SQL) .)

Em ambos os casos, sugiro que você faça a substituição na camada de aplicação, mas também pode fazer em SQL se realmente quiser:
where pattern like replace(@pattern, '%', '[%]')

E, dar ao usuário final acesso a curingas pode ser uma coisa boa em termos de interface do usuário.

Nota:existem mais alguns caracteres especiais '-' e '^' na consulta LIKE, mas eles não precisam ser escapados se você já estiver escapando '[' e ']' .