IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Procédure stockée, remplacement d'un caractère


Sujet :

PostgreSQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut Procédure stockée, remplacement d'un caractère
    Bonjour,

    Je cherche à réaliser une procédure stockée sous postgresql.

    Le but de cette procédure est de purger tous les champs "varchar" de la base de tout caractère non autorisé (à savoir la double quote ( " ), le point-virgule et la tabulation).

    Quelqu'un a t il une idée de comment faire ?

    Merci (je débute en base de données, alors toute aide sera la bienvenue )

  2. #2
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    il n'y a pas forcement besoin d'une procedure stockée pour faire cela, un update suffit, tu remplace par quelque chose tes caracteres "parasites" ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    je souhaite les remplacer par un caractère vide (ou au pire un espace).
    je souhaitais faire une procédure pour que l'executer régulièrement pour purger ma base des caractères parasites.
    la première difficulté est de trouver la liste des colonnes qui sont des VARCHAR.
    je pense avoir résolu en faisant comme ca :

    select tablename, column_name
    from information_schema.columns, pg_tables
    where table_name IN (
    SELECT tablename FROM pg_tables
    WHERE schemaname = 'public'
    )
    and data_type = 'character varying'
    AND schemaname = 'public'

    Mais maintenant il faut que je parcours le résultat et que je vérifie pour chaque enregistrement qu'il n'y ai pas de caractère interdit.
    Je pensais utilisé soit replace, soit STUFF et CHARINDEX, mais je ne vois pas comment intégrer l'un ou l'autre suite à ma première requête.

    Comment faire?

  4. #4
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    normalement tu ne devrais pas avoir a reexecuter la requete, il faut filtrer tes données à la source, avant de mettre les data dans la base, c'est plus propre, au pire tu met un trigger before.

    pour remplacer tes char parasites, voici une petite astuce, utilise translate et replace

    update matable set monchamp = replace( translate(monchamp,'§§§§§§§','&~#{[|`'), '§', '')

    la combinaison des 2 t'evitera de faire des replace imbriqués.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    le problème, c'est que la base est déjà remplie avec des caractères que je souhaite supprimer.

    peut etre ais je mal compris (je débute), mais il me semble qu'avec ton astuce on met à jour le nom de la colonne et pas les enregistrements?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    désolé, j'avais mal compris pour le update....

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    je n'y arrive pas

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    personne n'a une idée ou un exemple de code ?

    merci

Discussions similaires

  1. Remplacer une procédure stockée par une requête live
    Par antoniofr dans le forum Requêtes
    Réponses: 0
    Dernier message: 05/12/2008, 15h58
  2. Probleme de caractères avec une procédure stockée
    Par spaukensen dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/03/2008, 10h55
  3. Caractère spéciaux dans l'appel de procédures stockées
    Par ecthelion dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/12/2007, 16h00
  4. Réponses: 8
    Dernier message: 12/11/2007, 10h16
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo