Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Échappement de caractères spéciaux dans une instruction SQL LIKE à l'aide de paramètres sql

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