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

SQL Oracle Discussion :

Chaines vides sous Oracle


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Par défaut Chaines vides sous Oracle
    Bonjour,

    Je voudrais revenir sur un problème qui a déja été abordé dans d'autres discussions.
    Je souhaite insérer des chaînes de caractères de longueur 0 dans un champ NOT NULL. C'est apparament impossible du fait qu'Oracle interprête les chaînes vides comme des NULLs.
    Une solution consiste à insérer un blanc à la place de la chaîne vide mais cette solution ne me convient pas.

    La deuxième solution que je vois est de modifier le script de création de ma base de manière à ce que les VARCHARs acceptent la valeur NULL.
    Je m'interroge cependant sur les conséquences de cette modification : mes requêtes pour récupérer la valeur de ces champs vont elles me renvoyer NULL ou la chaîne vide?
    Qu'en est-il pour les champs de type glob/clob?

    Merci pour votre aide,

    Robin

  2. #2
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 145
    Par défaut
    Pourquoi ne pas créer un nouveau type de données, et lui attribuer les propriétés dont tu as besoin ?

  3. #3
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Pour le type CLOB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    set null NULL
     
    create table ttt (a clob);
    insert into ttt (a) values (null);
    insert into ttt (a) values (empty_clob ());
    insert into ttt (a) values ('a');
     
    select dbms_lob.getlength (a) from ttt;
     
    DBMS_LOB.GETLENGTH(A)
    ---------------------
    NULL
                        0
                        1
    Mais attention à la conversion implicite au type VARCHAR2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> select * from ttt;
     
    A
    -----------------------
    NULL
    NULL
    a

    DAB

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    très intéressant la conversion!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> def _SQLPLUS_RELEASE
    DEFINE _SQLPLUS_RELEASE = "1002000300" (CHAR)
    SQL> set null NULL
    SQL> create table t(x clob);
    Table created.
    SQL> insert into t values( empty_clob() );
    1 row created.
    SQL> select * from t;
    X
    -------------
    NULL

Discussions similaires

  1. La gestion des chaines vides dans Oracle (et les autres SGBD)
    Par tchize_ dans le forum Décisions SGBD
    Réponses: 25
    Dernier message: 28/10/2013, 17h50
  2. Mysql->Oracle - Chaine vide et valeurs nulle
    Par spidetra dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 06/09/2009, 16h41
  3. Pas de JOIN sous Oracle (vraiment dommage...)
    Par Isildur dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/03/2007, 11h28
  4. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  5. [BDD] renvoyer une chaine vide au lieu de null
    Par cmoulin dans le forum JDBC
    Réponses: 6
    Dernier message: 06/05/2004, 11h38

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