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

Langage SQL Discussion :

ramener un champ qui n'est pas toujours rempli


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 295
    Points : 135
    Points
    135
    Par défaut ramener un champ qui n'est pas toujours rempli
    Bonjour

    j'ai une table membre avec des nom champs nom, prenom, puis un champs raisonsociale, qui n'est rempli par l'utilisateur que si c'est un pro sinon il est laisse vide, je voudrais ramene seulement la liste des membre ou le champ est remplit mais je n'arrive pas , j'ai fai sun truc du style
    select * from membre where raisonsociale is not null mais cela me ramene meme les champs vides de raison sociale
    comment faire sinon merci de votre aide

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Quel est ton SGBD ?

    Pour la plupart des SGBD, une chaine vide n'est pas une valeur NULL. Tu doir donc écrire ta requête ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * 
      from membre
     where raisonsociale <> '';
    Pour être tranquille, si les valeurs NULL sont autorisées, tu peux vérifier les 2 conditions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * 
      from membre
     where raisonsociale <> ''
       and raisonsociale is not null

  3. #3
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Hum, plutôt :
    SELECT *
    FROM membre
    WHERE raisonsociale <> ''
    OR raisonsociale IS NOT NULL
    Sinon, une chaine à la fois null et vide n'existe pas, tu n'aurais aucun résultat

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    Citation Envoyé par Mindiell
    Hum, plutôt :

    Sinon, une chaine à la fois null et vide n'existe pas, tu n'aurais aucun résultat
    non car une chaine vide est non nulle donc ca l'affichera aussi

    EDIT: en fait t'as du rater le NOT en lisant

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Errare ...
    Mindiel,

    Tu commets l'erreur si souvent rencontrée entre AND et OR. L'exemple de Xo est OK.

    Si tu mets OR à la place de AND, tu obtiens bien toutes les lignes où la raison sociale n'est pas nulle, mais tu obtiens aussi toutes les lignes où cette même raison sociale est à blanc. Or, Digger n'en veut pas. Donc, il faut bien faire un AND et non un OR.

    La clause WHERE ci-dessous
    WHERE raisonsociale <> ''
    AND raisonsociale IS NOT NULL

    se lit: la zone raisonsociale n'est ni égale à (blanc) ET n'est ni égale à null,

    alors que la clause WHERE ci-après
    WHERE raisonsociale <> ''
    OR raisonsociale IS NOT NULL

    se lit: la zone raisonsociale n'est pas à (blanc), OU BIEN la zone raisonsociale n'est pas nulle.

    Ce qui implique que si la zone raisonsociale est nulle, elle peut quand même être à blanc, ou encore que si la zone raisonsociale est à blanc, elle peut malgré tout être nulle.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/07/2011, 19h20
  2. Réponses: 2
    Dernier message: 09/06/2011, 18h36
  3. Rajouter un champs qui n'est pas dans la table
    Par robbiano78 dans le forum Hibernate
    Réponses: 9
    Dernier message: 19/08/2009, 11h26
  4. Réponses: 13
    Dernier message: 19/04/2009, 23h58
  5. Trouver une valeur qui n'est pas dans un champ
    Par eric41 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2006, 16h48

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