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 :

[Architecture]Taille des données de type number


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 95
    Points
    95
    Par défaut [Architecture]Taille des données de type number
    Bonjour,
    un petit trou de mémoire pour ma part concernant une question de mes développeurs sur la taille occupée par des colonnes de type number.
    J'ai recherché dans la doc. ORACLE et sur le site de developpez.com quelle était la taille occupée pour une colonne de type number (par exemple ma colonne NUMBER(25,8) ) ? Est-ce une taille fixe ou bien qui dépend du contenu de cette colonne ? Merci si vous avez des liens ou des infos.

    @+,
    NicK.

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Utilisez la fonction VSIZE() pour afficher la place requise par une valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> select vsize(10), vsize(123456), vsize(123456789456.123456) from dual;
     
     VSIZE(10) VSIZE(123456) VSIZE(123456789456.123456)
    ---------- ------------- --------------------------
             2             4                         10
     
    SQL>

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 95
    Points
    95
    Par défaut
    OK. Cela peut me donner une idée de la taille utilisée par un number(25,8) pour reprendre mon exemple. Y a t'il une formule plus précise pour ce type de cas ?
    Je sais, je ne pose pas des questions très simples... car je sais y répondre ou les trouver !!!
    Merci de votre aide.

    @+,
    NicK.

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Vous pouvez aussi utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DUMP(colonne) FROM table
    qui affiche la représentation binaire de la colonne octet par octet.

    Mais je crois que la représentation d'un NUMBER peut être de taille variable.

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour je dirais comme sheik VSIZE qui permet d'avoir la longueur d'une colonne que l'on peut cumuler avec la fonction AVG

    Sinon tu dispose de la vue user_tab_columns mais qui va te donner des informations plutôt approximatives mais si tes stats on été calculés en compute :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    SQL> create table dvp_test ( a number (25,8)) ;
     
    Table créée.
     
    SQL> insert into dvp_test values (4) ;
     
    1 ligne créée.
     
    SQL> insert into dvp_test values (4.1); 
     
    1 ligne créée.
     
    SQL> insert into dvp_test values (123456); 
     
    1 ligne créée.
     
    SQL> insert into dvp_test values (123456789456.123456); 
     
    1 ligne créée.
     
    SQL> 
    SQL> select  avg (vsize (a)) from dvp_test ; 
     
    AVG(VSIZE(A))
    -------------
             4,75
     
    SQL> 
    SQL> analyze table dvp_test compute statistics ; 
     
    Table analysée.
     
    SQL> 
    SQL> select table_name , column_name , AVG_COL_LEN from user_tab_columns
      2  where table_name ='DVP_TEST'  ; 
     
    TABLE_NAME                     COLUMN_NAME                    AVG_COL_LEN
    ------------------------------ ------------------------------ -----------
    DVP_TEST                       A                                        5
     
    SQL> 
    SQL> drop table dvp_test ;
     
    Table supprimée.
     
    SQL>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    >>Est-ce une taille fixe ou bien qui dépend du contenu de cette colonne ?

    Je crois que cela dépend du contenu.
    Du moins c'est ce qu'on en dit dans mon service où un collègue s'était penché sur la question en oracle V7.3.

    Ainsi il ne nous parait pas toujours intéressant de s'embêter à indiquer la taille des NUMBER lors de la création de nos tables. (ex: NUMBER(2) ==> remplacé par NUMBER), sachant que cela prend la même place...Et que (on ne sait jamais) la rubrique devra peut-être un jour contenir des nombres + grands... Mais je reconnais que ce n'est pas très propre et qu'il s'agit peut-être d'une mauvaise habitude...

    Amicalement. Patrick.

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    C'est effectivement une taille qui est dépendante du contenu. Tout comme varchar2 par ex. Cependant la taille doit être précisé pour avoir un modéle de données propre et empéché d'avoir de mauvaises insertions.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/08/2006, 14h52
  2. Arrondi des données de type real
    Par YOYOVbSQL dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/06/2006, 09h02
  3. Parsing XML gestion DB I/O sur des données de type CLOB
    Par stchitembo dans le forum Oracle
    Réponses: 5
    Dernier message: 22/03/2006, 11h14
  4. [Access] Enregistrer des données de type Texte RTF
    Par portu dans le forum Bases de données
    Réponses: 22
    Dernier message: 27/10/2005, 22h54
  5. Réponses: 5
    Dernier message: 13/07/2005, 10h03

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