Vous avez deux options :
-
enfermez-les dans
[
et]
. Donc :where pattern like '[%]'
Recherche le caractère de pourcentage.Liste complète des caractères à échapper -
'_', '%', '[', ']'
avec les remplacements correspondants'[_]', '[%]', '[[]', '[]]'
. Un exemple de code peut être trouvé dans Échapper au caractère d'échappement ne fonctionne pas - Opérateur SQL LIKE -
utilisez un caractère d'échappement qui ne se trouvera probablement pas dans la chaîne, comme un backtick :
where pattern like '`%' escape '`'
(Voir la syntaxe sur MSDN - LIKE (Transact-SQL) .)
Dans les deux cas, je vous suggère de faire la substitution dans la couche application, mais vous pouvez aussi le faire en SQL si vous le voulez vraiment :
where pattern like replace(@pattern, '%', '[%]')
Et, donner à l'utilisateur final l'accès aux caractères génériques peut être une bonne chose en termes d'interface utilisateur.
Remarque :il y a quelques caractères spéciaux supplémentaires '-'
et '^'
dans la requête LIKE, mais ils n'ont pas besoin d'être échappés si vous échappez déjà '['
et ']'
.