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

DB2 Discussion :

Valeur null dans un where


Sujet :

DB2

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable de site
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable de site

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Valeur null dans un where
    Bonjour,
    J'ai un problème un peu particulier.
    J'utilise POWER QUERY via ODBC pour extraire des données AS400. Jusque là tout va bien.
    J'ai dans mon WHERE une condition SCLREG02 IN (" & NIV2 & ") où NIV2 est la valeur d'une cellule excel.
    Si une valeur est présente, tout va bien.
    Si la cellule est vide, je souhaiterai que le where ne soit pas pris en compte (toutes les enregistrements soit pris en compte).
    En résumé, existe-t-il un moyen de dire SCLREG02 IN (" toutes les valeurs ") ?

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Dans ce cas de figure, le plus simple est d'utiliser un CASE :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WHERE CASE WHEN MA_COLONNE IS NULL THEN 1
               WHEN MA_COLONNE IN (ma_liste_de_valeurs) THEN 1
               ELSE 0
          END AS TRUC = 1


    EDIT : vu cette remarque

    Citation Envoyé par combory Voir le message
    J'ai dans mon WHERE une condition SCLREG02 IN (" & NIV2 & ") où NIV2 est la valeur d'une cellule excel.
    Il n'y a aucun intérêt à utiliser un IN, la valeur étant unique, autant utiliser l'opérateur =

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 765
    Points
    10 765
    Par défaut
    Dans ce cas, tu peux aussi utiliser la fonction coalesce qui remplace le null par ce que tu souhaites.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Responsable de site
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable de site

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bonjour escartefigue et merci pour cette réponse.

    J'ai exploré cette piste, sans succès.

    Dans POWER QUERY j'ai mis la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NIV2 = if Excel.CurrentWorkbook(){[Name="CLNIV2"]}[Content]{0}[Column1]=null then "" else Text.From(Excel.CurrentWorkbook(){[Name="CLNIV2"]}[Content]{0}[Column1])
    Pour rappel, dans ma requête SQL mon WHERE contient SCLREG02 IN (" & NIV2 & ")
    Après mon THEN, j'ai essayé plein de "valeur" (NULL, ALL, ...) mais rien n'y fait.
    N'existe-t-il pas un argument du type ALL VALUES ?

    Je m'arrache les cheveux.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    ATTENTION (1) : =NULL n'a pas de sens, NULL n'est pas une valeur, mais un marqueur d'absence de valeur.
    Il faut donc écrire IS NULL et non pas =NULL

    ATTENTION (2) : il ne faut pas confondre IS NULL et chaîne de caractères vide !
    Une chaîne vide c'est une valeur, on teste donc MA_COLONNE='', rien à voir avec MA_COLONNE IS NULL

    ATTENTION (3) : la remarque qui précède n'est pas applicable sous Oracle, qui confond allègrement NULL et vide au mépris de la norme SQL et des fondamentaux de la théorie relationnelle

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Responsable de site
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable de site

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    En effet, il y a bien une interprétation différente de "null" entre Power Query et SQL.
    Finalement, ne trouvant pas de solutions à mon problème, j'ai changé mon fusil d'épaule.
    J'ai créer une sous-requête qui me donne la liste des codes possibles (j'ai donc remis le IN dans mon where )
    Du coup ma requête est beaucoup plus rapide en traitement

    Merci pour votre aide et votre réactivité.

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

Discussions similaires

  1. [PL/SQL] curseurs et valeur Null dans la clause WHere
    Par etoileDesNeiges dans le forum Oracle
    Réponses: 13
    Dernier message: 11/12/2006, 16h58
  2. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02
  3. [delphi 7 / DOA] valeur null dans setvariable
    Par delphim dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/11/2004, 10h14
  4. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 11h15
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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