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 ']'
.