É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
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!