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 :

colonne en VARCHAR2 avec espaces à la fin


Sujet :

Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 277
    Points
    277
    Par défaut colonne en VARCHAR2 avec espaces à la fin
    Bonjour à tous, (ça faisait un petit moment que je n'étais pas passé)

    Je passe pour poser une question qui me turlupine et à laquelle je n'ai pas trouvé de réponse.

    Nous avons récemment migré notre système de facturation basé sur une base Oracle. La version d'Oracle a été "upgradée" puisque nous sommes passés d'une 9i à une 10g.

    J'ai constaté sur une de nos tables un truc qui m'a choqué...
    Une colonne en VARCHAR2 qui contient des espaces à la fin de la chaîne de caractère.
    Jusqu'à présent en 9i j'avais toujours eu l'impression (bien que non confirmée par une spécification officielle) que les espaces à la fin des chaines de caractères stockées sous VARCHAR2 étaient tronquées.
    ex : Je saisi 'Oracle 9i ' dans la colonne il ne garde que 'Oracle 9i'

    Or là en 10g, il semblerait que la suppression des espaces à la fin de nos chaines en VARCHAR2 ne se fasse plus...
    Voilà le code de création de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE D
    (
      D_CODE        NUMBER(10)            NOT NULL,
      L_CODE           NUMBER(6)             NOT NULL,
      D_GROUP       NUMBER(6)             NOT NULL,
      D_TEXT        VARCHAR2(240 CHAR)    NOT NULL,
      SHORT_D_TEXT  CHAR(15 CHAR)
    )
    Peut être que j'ai halluciné concernant la 9i... ou peut être qu'il y a un changement en 10g...
    Si quelqu'un pouvait éclairer ma lanterne, ce serait cool.
    Dyvim

  2. #2
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par dyvim Voir le message
    ...
    J'ai constaté sur une de nos tables un truc qui m'a choqué...
    Une colonne en VARCHAR2 qui contient des espaces à la fin de la chaîne de caractère.
    Jusqu'à présent en 9i j'avais toujours eu l'impression (bien que non confirmée par une spécification officielle) que les espaces à la fin des chaines de caractères stockées sous VARCHAR2 étaient tronquées.
    ex : Je saisi 'Oracle 9i ' dans la colonne il ne garde que 'Oracle 9i'
    ...
    Comme vous le dite c'était votre impression.
    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
     
    Connected to Oracle9i Enterprise Edition Release 9.2.0.5.0 
    Connected as mni
     
    SQL> create table t_v2 (a varchar2(10));
     
    Table created
     
    SQL> insert into t_v2 values (' test ');
     
    1 row inserted
     
    SQL> commit;
     
    Commit complete
     
    SQL> select a, translate(a,' ','*'), length(a) from t_v2;
     
    A          TRANSLATE(A,'','*')  LENGTH(A)
    ---------- ------------------- ----------
     test      *test*                       6
     
    SQL> drop table t_v2;
     
    Table dropped
     
    SQL>

  3. #3
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 277
    Points
    277
    Par défaut
    Merci de cette réponse rapide... (et pour ce test aussi vu que depuis la migration nous n'avons plus de base en 9i )

    Juste par acquis de conscience, est ce qu'il n'existerait pas un réglage de la base pour virer ces espaces automatiquement dans les VARCHAR2 ?

    Sinon j'ai toujours la solution des triggers sur la colonne qui "triment" le contenu de celle-ci ou au minimum de l'update massif pour corriger l'existant mais ça ne m'explique pas vraiment pourquoi avant je n'avais pas d'espaces et que maintenant j'en ai.
    Dyvim

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Points : 388
    Points
    388
    Par défaut
    bonjour,
    Cela dépend aussi par ou les données sont entrées.
    Par exemple sous forms par défaut il enlève les blanc en fin de chaine.

  5. #5
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 277
    Points
    277
    Par défaut
    Ah en effet...

    Dans mon cas, les données sont entrées soit par requête SQL (ou PL/SQL) soit par SQL Loader...
    Dyvim

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/12/2010, 20h26
  2. Nom de variable (colonne) avec espace
    Par kikilolo dans le forum Débutez
    Réponses: 2
    Dernier message: 02/08/2010, 12h02
  3. Nom de dossier avec espace à la fin
    Par Gui13 dans le forum Windows 7
    Réponses: 3
    Dernier message: 10/05/2010, 19h23
  4. Réponses: 0
    Dernier message: 27/04/2010, 17h32
  5. Comment eviter l'erreur d'un nom composé de colonne avec espace?
    Par soror dans le forum Bases de données
    Réponses: 8
    Dernier message: 13/07/2007, 13h54

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