Maison  >  Article  >  développement back-end  >  Comment échapper aux caractères spéciaux dans les modèles PostgreSQL LIKE ?

Comment échapper aux caractères spéciaux dans les modèles PostgreSQL LIKE ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-23 00:22:13361parcourir

How to Escape Special Characters in PostgreSQL LIKE Patterns?

Échapper aux caractères spéciaux dans les modèles LIKE de PostgreSQL

L'échappement des caractères spéciaux dans les modèles LIKE est crucial pour garantir une correspondance précise. Par exemple, considérons un scénario dans lequel vous recherchez des lignes dont la colonne de nom commence par une chaîne fournie par l'utilisateur, telle que « rob% ». Cependant, si la saisie de l'utilisateur inclut des caractères spéciaux tels que "_", cela entraînera des faux positifs.

Mécanismes d'échappement

PostgreSQL vous permet d'échapper aux caractères spéciaux à l'aide de l'option une barre oblique inverse () ou un caractère d'échappement défini par l'utilisateur spécifié avec la clause ESCAPE. Pour faire correspondre littéralement un caractère spécial, vous devez l'échapper deux fois.

Exemple

Pour faire correspondre "rob_" littéralement, vous utiliserez le modèle LIKE suivant :

WHERE name LIKE 'rob^^%'

Vous pouvez également utiliser une clause d'échappement et spécifier un caractère d'échappement alternatif :

WHERE name LIKE 'rob_%node1^^node2.uucp@%' ESCAPE '^'

Cela permettra faites correspondre "john%node1^node2.uccp@" suivi de n'importe quel caractère.

Considérations

  • Le caractère d'échappement par défaut est la barre oblique inverse, mais il est utilisé pour à d'autres fins lorsque standard_conforming_strings est désactivé.
  • L'échappement des caractères spéciaux s'applique également aux instructions SQL dynamiques construites à partir de saisie utilisateur, auquel cas elle doit être effectuée côté serveur pour éviter l'injection SQL.
  • L'utilisation d'espaces réservés pour la substitution de variables garantit à la fois une correspondance précise et la sécurité.

SQL générique Déclaration

Voici une instruction SQL générique qui peut être utilisée avec ou sans standard_conforming_strings ON, en utilisant le caractère d'échappement côté serveur remplacement :

SELECT * FROM USERS WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn