Échapper des chaînes pour la correspondance de modèles dans PostgreSQL
Pour faire correspondre avec précision les modèles dans PostgreSQL où la chaîne fournie par l'utilisateur peut contenir des caractères de modèle spéciaux comme % , pensez à échapper ces caractères pour garantir des correspondances précises. Alternativement, l'application peut gérer le processus d'échappement.
Dans PostgreSQL, les caractères comme % et _ doivent être cités à l'aide du , mais cela peut être personnalisé avec la clause ESCAPE. Pour faire correspondre le caractère littéralement, il doit être cité deux fois.
Par exemple, pour faire correspondre le modèle 'john%node1^node2.uucp@' avec ^ comme caractère d'échappement, utilisez la requête suivante :
... WHERE field LIKE 'john^%node1^^node2.uucp@%' ESCAPE '^'
Cependant, lorsque standard_conforming_strings est désactivé (PG 9.1 l'a activé par défaut), il est utilisé à d'autres fins. De plus, les guillemets côté client peuvent être nécessaires dans les scénarios d'injection.
Pour une gestion générique dans Go, en tenant compte à la fois des chaînes_conforming_standard et des caractères de guillemets alternatifs, la requête suivante peut être utilisée :
db.Query("SELECT * from USERS where name like replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'", variable_user_input);
Ceci gère l'échappement et le remplacement des caractères spéciaux côté serveur, empêchant l'injection SQL et garantissant une correspondance de modèle précise.
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!