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

 Oracle Discussion :

remplissage de champs varchar2(xx byte)


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 43
    Points
    43
    Par défaut remplissage de champs varchar2(xx byte)
    Bonjour

    Sur une base de donnée Oracle 9i une table a été créée de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE DIM_TIME
    (
      ID_TIME       NUMBER,
      DATE_JOUR     DATE,
      SEMAINE       NUMBER,
      NUM_MOIS      NUMBER,
      LIBELLE_MOIS  VARCHAR2(12 BYTE),
      TRIMESTRE     NUMBER,
      ANNEE         NUMBER
    )
    suivie de l'execution de ce script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CREATE OR REPLACE procedure load_time_dimension as
    date_jour date;
    id_time number;
    begin
     
    id_time:=1;
    date_jour := to_date('01/01/1900','DD/MM/YYYY');
     
    while date_jour < to_date('31/12/2010','DD/MM/YYYY') loop
     
      insert into dim_time
      select
      id_time,
      date_jour,
      to_number(to_char(date_jour,'ww')),
      to_number(to_char(date_jour,'mm')),
      to_char(date_jour,'month'),
      to_number(to_char(date_jour,'q')),
      to_number(to_char(date_jour,'yyyy'))
      from dual;
     
      commit;
      date_jour:=date_jour+1;
      id_time:=id_time+1;
    end loop;
     
    end;
    /
    Mon problème:

    quand je fais une requête aussi simple que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * from DIM_TIME where
    ANNEE = 1998 
    and TRIMESTRE = 2 
    and LIBELLE_MOIS = 'avril'
    je n'obtiens absolument rien. Je me suis rendu compte plus tard que dans la table DIM_TIME, dans le champ LIBELLE_MOIS, les données ne sont pas ce qu'elles semblent etre.... Par exemple au lieu de 'avril' on a 'avril ' (avril suivi d'un certain nombre d'espace. Et ceci est vrai pour tous les mois, sauf septembre.

    Je me suis dit qu'il suffirait de faire une modification de la table pour regler le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE DIM_TIME
    SET LIBELLE_MOIS = 'février'
    WHERE LIBELLE_MOIS = '%février%'
    (et faire de même pour les autres mois)
    Mais ca ne change rien du tout! Du coup je me demande si le problème n'est pas lié à la manière avec laquelle le champ a été créé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBELLE_MOIS  VARCHAR2(12 BYTE)
    Et là je ne suis pas sûr de ce qu'il faut faire...

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    c'est le to_char(date_jour,'month') qui te renvoie des espaces au bout.
    Tu peux faire rtrim(to_char(date_jour,'month')) pour avoir ce que tu veux.
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    Merci pour l'indication! J'ai fait un update du champ en remplaçant à chaque fois 'mois%' par 'mois' avant de lire votre réponse, mais je modifierai quand meme le script avec trim car nous allons devoir le reutiliser.

    Ceci ne resout pas mon problème que j'ai avec Oracle Business Intelligence EE, mais ca répond à ma question

    Thank you very much!

  4. #4
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Deja ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE DIM_TIME
    SET LIBELLE_MOIS = 'février'
    WHERE LIBELLE_MOIS = '%février%'
    Ca ne marche pas !
    Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE DIM_TIME
    SET LIBELLE_MOIS = 'février'
    WHERE LIBELLE_MOIS LIKE '%février%'
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/03/2008, 11h03
  2. remplissage automatique champs
    Par stefano66 dans le forum IHM
    Réponses: 4
    Dernier message: 01/03/2008, 10h23
  3. Remplissage dynamique champ email
    Par killingspree dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 26/02/2008, 17h48
  4. remplissage de champs dans une fenêtre sceondaire en javascr
    Par max.onyx dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/12/2005, 15h05
  5. remplissag de champ d'une page d'un autre domaine
    Par max.onyx dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/12/2005, 15h01

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