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 :

Quand utiliser char et quand utiliser varchar2


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Par défaut Quand utiliser char et quand utiliser varchar2
    Bonjour,

    Je peine vraiment à comprendre quelle différence il y a entre char et varchar2. Est-ce que quelqu'un pourrait me donner un exemple de variable pour laquelle char est approprié et un exemple de variable pour laquelle varchar2 est approprié ?

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Une colonne de type CHAR est de longueur fixe. Quelle que soit la longueur de la chaine qui y a été enregistrée un CHAR(6) retournera toujours 6 caractères.
    Une colonne de type VARCHAR est de longueur variable. Elle ne stocke que les caractères qui y ont été enregistrés.
    Dans une table Adresse, on utilisera par exemple un CHAR(5) pour le code postal (NON ce n'est pas un nombre !) et un VARCHAR(30) pour le nom de la ville.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Par défaut
    Merci beaucoup pour cette explication, je crois que cette fois-ci j'ai finalement compris. Mais est-ce que de toute manière une variable ne stocke pas toujours QUE les caractères qui y ont été enregistrés ?

    Ainsi pour la variable "codePostal char(5)", si je stocke un code de 4 chiffres et non 5 chiffres elle ne va enregistrer que les 4 caractères correspondant aux 4 chiffres entrés non ?

    Et pour la variable "ville varchar2(30)", si je stocke "Paris", elle ne va enregistrer que les 5 caractères du nom de la ville non ?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Non, le CHAR(5) stockera toujours 5 caractères. La chaine enregistrée sera complétée par des espaces.
    Le VARCHAR lui ne conservera que les caractères enregistrés mais aussi tous les caractères enregistrés.
    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
    CREATE TABLE mon_test
        (   mon_char    CHAR(5)
        ,   mon_varchar VARCHAR(30)
        )
    ;
    INSERT INTO mon_test
        (   mon_char
        ,   mon_varchar
        )
    VALUES
        (   '4car'
        ,   '4car'
        )
    ;
    INSERT INTO mon_test
        (   mon_char
        ,   mon_varchar
        )
    VALUES
        (   '5car '
        ,   '5car '
        )
    ;
    SELECT  '[' || mon_char     || ']'  AS  mon_char
        ,   '[' || mon_varchar  || ']'  AS  mon_varchar
    FROM    mon_test
    ;
    mon_char    mon_varchar
    --------    -----------
    [4car ]     [4car]
    [5car ]     [5car ]
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Par défaut
    Je ne comprends pas cette phrase : "Le VARCHAR lui ne conservera que les caractères enregistrés mais aussi tous les caractères enregistrés" et dans ton exemple on dirait que le résultat est le même que la variable soit char ou varchar...

    puisqu'on a :

    mon_char mon_varchar
    -------- -----------
    [4car ] [4car]
    [5car ] [5car ]

  6. #6
    Membre très actif
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Par défaut
    Si je veux que le user entre 6 chiffres, ni plus ni moins, je dois créer quel type de variable ?

Discussions similaires

  1. quand est ce qu'on utilise (do..while)
    Par nitch01 dans le forum Débuter
    Réponses: 2
    Dernier message: 22/12/2009, 21h18
  2. Réponses: 3
    Dernier message: 28/11/2009, 13h01
  3. Réponses: 6
    Dernier message: 27/11/2008, 16h37
  4. Réponses: 8
    Dernier message: 11/01/2008, 05h51
  5. Quand et dans quels cas utiliser les méthodes repaint() et validate()?
    Par kayzra dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 02/08/2007, 15h46

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