Échappement barre oblique inverse dans Postgresql
Je suis en train d'écrire une fonction sql de Postgresql qui va analyser un chemin de fichier.
Je veux revenir juste le nom de fichier.
Je ne peux pas obtenir passé, précis de la chaîne de texte dans la fonction.
Voici la fonction:
Function: job_page("inputText" text)
DECLARE
$5 text;
BEGIN
$5 = quote_literal("inputText");
return $5;
END
Lorsque je l'exécute:
select job_page('\\CAD_SVR\CADJOBS12-CEDARHURST ELEMENTARY SCHOOL12-20.DWG')
J'obtiens ce résultat:
"E'\\CAD_SVRCADJOBSé2-CEDARHURST ELEMENTARY SCHOOLé2-20.DWG'"
Postgresql interprète la barre oblique suivie par certains personnages comme un caractère spécial.
Comment échapper?
OriginalL'auteur mohnston | 2010-06-15
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser échapper à la syntaxe de la chaîne:
Cela fonctionne en tout cas.
Ou vous pouvez
set standard_conforming_strings=on
et d'utilisation:quote_literal
fonction doit être utilisée uniquement lorsque vous serez à la construction d'une requête pourexec
appel dans les fonctions pl/pgsql. Pour la construction d'une requête d'un client, vous devez utiliser un client de la bibliothèque de l'citant fonction, comme lePQescapeStringConn
dans libpq oupg_escape_string
en PHP. Mais la meilleure option est d'utiliser les requêtes préparées et utiliser une chaîne comme argument, ce qui élimine tous les citant et est beaucoup plus sûr trop.Vous ne comprenez pas. Vous êtes à l'appel de cette job_page() la fonction à tort. Vous avez besoin de la citer l'argument avant d'appeler job_page - il n'y a aucun moyen d'une fonction de citer son propre argument correctement pour lui-même. Coller d'un code, d'où vous appelez cette fonction, et alors nous serons en mesure de vous aider.
OriginalL'auteur Tometzky
Vous avez pour échapper à la \ avec un autre \
c'est à dire \\
Vous pouvez modifier ce comportement par le réglage de la standard_conforming_strings option. Par défaut, elle est désactivée, mais ce défaut va changer dans l'avenir.
Je recommande la double barre oblique inverse pour le moment.
OriginalL'auteur Peter Tillemans