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

SQL Oracle Discussion :

Update des data dans une column varchar2(3 byte) [Débutant(e)]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut Update des data dans une column varchar2(3 byte)
    Bonjour,

    J'ai une column de type VARCHAR2(3 byte) dans une de mes tables.

    A l'interieur de cette colonne j'ai des values du genre 1 ,COR ,023 ,22 Je voudrais faire un petit script pour updater toutes les valeurs en rajoutant des 0 devant lorsque la valeur ne fait pas 3 caractères.

    Par exemple:
    8 devient 008
    021 reste 021
    22 devient 022

    Si quelqun a une piste je suis preneur
    Merci d'avance

    PS: Je ne peux évidement pas changer le type de donnée......

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    regardez du côté du "CASE....WHEN" et "length"

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    Bonjour,

    Une solution pourrait ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    With t As (
    Select 'a' COL From DUAL Union All
    Select 'afdsgd' COL From DUAL Union All
    Select '1234' COL From DUAL Union All
    Select Null COL From DUAL Union All
    Select '12' COL From DUAL Union All
    Select '1' COL From DUAL
    )
    Update T Set col = Trim(TO_CHAR(T.COL, '000'))
     Where REGEXP_LIKE(T.COL, '^[0-9]*$')
       And LENGTH(T.COL) <= 3)

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Utilisez Lpad, c'est fait pour ça.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Merci a tous pour les pistes qui m'ont bien aidé, ce que j'ai fait de doit pas être des plus propres mais bon vus que c'est un script oneshot ca feras le job.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UPDATE NATURE SET NAT_CDNATURE =
    CASE 
        WHEN LENGTH(TRIM(NAT_CDNATURE)) = 1 THEN CONCAT('00',TRIM(NAT_CDNATURE))
        WHEN LENGTH(TRIM(NAT_CDNATURE)) = 2 THEN CONCAT('0',TRIM(NAT_CDNATURE))
        WHEN LENGTH(TRIM(NAT_CDNATURE)) = 3 THEN NAT_CDNATURE
        ELSE 'XXX'
    END
    PS: J'ai testé avec Lpad que je ne connaissais pas non plus (je touche rarement a des bases oracle) ca marche aussi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Accélerez l'update des data de plots dans une GUI
    Par Phidyos dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 10/05/2014, 08h49
  2. Update des boutons dans une GDBDebuggerPage
    Par kkt8 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 20/01/2011, 10h20
  3. [MySQL] Ajouter des données dans une table avec la cmd update
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/09/2007, 19h54
  4. rajouter des data dans une Base de donnée SQL
    Par el_pilacho dans le forum Accès aux données
    Réponses: 1
    Dernier message: 12/01/2007, 12h42
  5. [C#][Débutant] Comment gerer des datas dans une form
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/04/2006, 00h10

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