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 :

un SELECT avec NULL forcé dans le résultat !


Sujet :

DB2

  1. #1
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut un SELECT avec NULL forcé dans le résultat !
    Bonjour,
    Mon but est d'avoir un SELECT du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT champ1, champ2, NULL as champ3
    FROM    MABIB.MYFILE
    Mais DB2/AS400 n'accepte cette syntaxe avec le NULL!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL0206 - La colonne NULL ne se trouve pas dans les tables indiquées
    Je ne veux pas avoir un NULL sous format chaîne de caractères mais plutôt un vrai type NULL. En effet, une application Java doit exécuter cette requête et tester sur le type de retour de cette requête, si c'est NULL le champ en question (ici champ3) ne sera pas traité ....

    Une piste ?

  2. #2
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Points : 225
    Points
    225
    Par défaut
    Sous Zos, on ne peut pas non plus sélectionner directement la valeur NULL, par contre tu peux contourner le souci en écrivant par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT
    CASE WHEN 1 = 2 THEN '1' ELSE NULL END AS CHAMP3
    ...
    1 n'étant jamais égal à 2, DB2 renvoie NULL.

  3. #3
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Cool comme solution
    Merci.
    Je mets
    Citation Envoyé par pdz74 Voir le message
    Sous Zos, on ne peut pas non plus sélectionner directement la valeur NULL, par contre tu peux contourner le souci en écrivant par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT
    CASE WHEN 1 = 2 THEN '1' ELSE NULL END AS CHAMP3
    ...
    1 n'étant jamais égal à 2, DB2 renvoie NULL.

  4. #4
    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
    C'est en effet un stratagème astucieux

    Perso, j'aurais plutot écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    update MABIB.MYFILE Set CHAMP3 = NULL

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Points : 1 084
    Points
    1 084
    Par défaut
    Exact, NULL n'est pas possible en tant que constante.
    En ce qui concerne le CASE, on peut le réduire à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN 1 = 2 THEN 0 END
    Sinon, le mieux est d'utiliser NULLIF.
    Si les deux arguments passés à la fonction sont égaux, alors NULL est retourné. Ca nous donne donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select ...., NULLIF(0, 0)

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    ce type de syntaxe ne marche-t-elle pas ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CAST(NULL as CHAR(1)) as champ3

    ou prenez n'importe quel type.

    C'est que j'utilise sous system i

  7. #7
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Points : 225
    Points
    225
    Par défaut
    Je confirme que CAST(NULL AS CHAR(1)) fonctionne.

    Comme quoi, ça en fait des moyens un peu loufoques de forcer NULL, ce serait tellement plus simple si on pouvait sélectionner directement NULL... Mais quand il s'agit de faire simple, IBM n'est pas toujours présent !

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

Discussions similaires

  1. Select avec des valeurs uniques et résultats multiples
    Par Daviloppeur dans le forum AngularJS
    Réponses: 0
    Dernier message: 16/10/2014, 16h01
  2. [MySQL] Select avec un array dans ma BDD
    Par voyageurdumonde dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/05/2011, 08h13
  3. Problème de requete SELECT avec NULL
    Par Tchupacabra dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/03/2008, 12h25
  4. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  5. Selection avec la souris dans une zone de texte
    Par GESCOM2000 dans le forum IHM
    Réponses: 8
    Dernier message: 11/02/2006, 10h12

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