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 :

Nls_lang : deux codage dans une même table


Sujet :

Oracle

  1. #1
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Points : 166
    Points
    166
    Par défaut Nls_lang : deux codage dans une même table
    Bonjour,



    dans une même TAB1 j'ai 2 colonne col1 varchar2(150) et col2 varchar2(150)
    le deux colonnes vont contenir des information mais en deux codage differents comment je puisse inserer dans ces deux colonnes en utilisant dans un même insert 2 codage differents.
    ensuite comment consulter ces deux colonnes pour afficher col1,col2 ?

    Merci d'avance

  2. #2
    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
    Une colonne de type VARCHAR2 ne peut contenir que des caractères du jeu de caractères défini par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
    Une colonne de type NVARCHAR2 ne peut contenir que des caractères du jeu de caractères défini par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from nls_database_parameters 
    where parameter='NLS_NCHAR_CHARACTERSET';
    Pour les consulter, il suffit que le client définisse la bonne valeur pour NLS_LANG

  3. #3
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Points : 166
    Points
    166
    Par défaut
    Merci Pifor.

    donc si j'ai bien compris je dois avoir deux colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    col1 varchar2(150)
              col2 Nvarchar2(150)
    en suite il faux fixer les bon paramètres?
    et sinon on ne peux pas avoir 3 colonne dont chacune a un codage different puisqu'on a seulement varchar2 et NVARCHAR2 ?
    c'est ça ou j'ai mal compris

  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
    donc si j'ai bien compris je dois avoir deux colonne :

    Code :
    col1 varchar2(150)
    col2 Nvarchar2(150)
    Oui.
    en suite il faux fixer les bon paramètres?
    Les paramètres jeux de caractères pour les types des colonnes sont en général définis lors de la création de la base (CREATE DATABASE). On peut aussi les changer après création de la base: dans tous les cas, il s'agit de paramètres globaux qui s'appliquent à toutes les colonnes "caractères" de la base.

    et sinon on ne peux pas avoir 3 colonne dont chacune a un codage different puisqu'on a seulement varchar2 et NVARCHAR2 ?
    c'est ça ou j'ai mal compris
    Pour les colonnes CHAR, NCHAR, VARCHAR2, NVARCHAR2, CLOB et NCLOB, oui c'est ça. Sinon on peut théoriquement essayer de créer des colonnes de type RAW et gérer soi-même le codage en binaire, mais je déconseille cette approche. Je conseillerais plutôt d'utiliser un seul jeu de caractères étendu basé sur l'UTF8 comme AL32UTF8 si possible.

  5. #5
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Points : 166
    Points
    166
    Par défaut
    ou bien avec le ALTER SESSION SET .... là on peux modifié ces jeux de caractères sur la même session je pense , si à la création de la base on les a pas bien fixé ?

  6. #6
    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
    Non: avec ALTER SESSION on ne peut que modifier les élements language et territoire de NLS_LANG et non le jeu de caractères de la session.

    Attention, il ne faut pas confondre le jeu de caractères de la session défini par NLS_LANG et celui de la base. Quel que soit la valeur de NLS_LANG, c'est le jeu de caractères associé aux colonnes des tables qui est utilisé par stocker les caractères. Le jeu de caractères défini par NLS_LANG permet seulement d'effectuer les conversions entre le client et la base de données.
    Voir http://fadace.developpez.com/oracle/nls/

  7. #7
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Points : 166
    Points
    166
    Par défaut
    Pifor

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

Discussions similaires

  1. Fusionner deux tables pour afficher dans une même table
    Par mychan dans le forum DBDesigner
    Réponses: 3
    Dernier message: 12/08/2013, 09h20
  2. Comparer deux lignes d'une même table dans une bdd
    Par Pierrot33 dans le forum Général Java
    Réponses: 3
    Dernier message: 19/11/2011, 19h04
  3. Copier un enregistrement dans une même table
    Par slammer dans le forum Langage SQL
    Réponses: 11
    Dernier message: 04/05/2010, 23h17
  4. [MySQL] Permutation de deux valeurs dans une même colonne de table
    Par andry.aime dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/01/2009, 13h19
  5. Réponses: 2
    Dernier message: 05/08/2008, 16h27

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