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 :

Decode return null


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 27
    Par défaut Decode return null
    Bonjour à tous.

    J'essaye de faire une requête du genre.

    Select decode((select 'nom' from dual),'n','nom existe',(select 'bla' from dual where 1=2)) from dual.

    Mon gros soucis est que decode va me retourner null alors que j'aimerai qu'il me retourne la même valeur que si je faisais un select 'bla' from dual where 1=2 à savoir un rowset vide.

    Je suppose que c'est une caractéristique de decode de retourner null.... Mais est-ce que qqn aurait une idée de requête qui me permettrai d'avoir à la fois la possibilité de faire des conditions et de ne rien retourner s'il ne trouve rien?


    Merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Bonjour.

    Tu as essayé de mettre ''? (2 cotes simples sans espace)

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 27
    Par défaut
    malheureusement oui et sans succès

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Pour quelle raison veux-tu que cela ne te retourne rien? Pour que ça plante?
    N'y a-t-il pas un moyen plus simple de gérer cela?

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le comportement est normal puisqu'il y a une ligne dans la table dual, ça n'a rien à voir avec decode.

    Si vous ne voulez pas de ligne, il faut filtrer avec un prédicat faux dans le where.

    Pouvez-vous "mieux" expliquer votre problématique globale car ça semble obscur et j'aimerai comprendre dans quel cas on veut ne pas avoir de résultat.

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Le comportement est normal puisqu'il y a une ligne dans la table dual, ça n'a rien à voir avec decode.

    Si vous ne voulez pas de ligne, il faut filtrer avec un prédicat faux dans le where.

    Pouvez-vous "mieux" expliquer votre problématique globale car ça semble obscur et j'aimerai comprendre dans quel cas on veut ne pas avoir de résultat.
    Classiquement, c'est pour avoir simplement les métadonnées (noms des colonnes, types, etc.), et ça se fait effectivement avec par exemple un WHERE 1 = 0.

  7. #7
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 27
    Par défaut
    Alors justement, voilà mon point et ma question.

    Si on reprend le petit exemple sql que j'ai donné,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select decode((select 'nom' from dual),'n','nom existe', (select 'bla' from dual where 1=2)) 
    from dual
    Cette requête va me retourner 'null'. Pourquoi? parce que quand j'execute:

    select 'nom' from dual va me retourner 'nom' qui n'est pas égal à 'n', donc il ne va pas m'afficher 'nom existe', mais (select 'bla' from dual where 1=2). Hors si j'execute (select 'bla' from dual where 1=2) sans décode, il me retourne le résultat escompté à savoir no rows. Mais vu qu'il est dans le decode, il m'affiche 'null'.

    D'ailleurs si je transforme mon code de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select decode((select 'nom' from dual where 1=2),'n','nom existe',(select 'bla' from dual where 1=2)) 
    from dual;
    Le résultat est le même, à savoir null.

    Est-ce que c'est plus clair?

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

Discussions similaires

  1. subreport return null
    Par khili dans le forum Langage
    Réponses: 0
    Dernier message: 21/05/2011, 16h53
  2. [Security] HttpSession returned null object for ACEGI_SECURITY_CONTEXT
    Par Elmour dans le forum Spring
    Réponses: 0
    Dernier message: 05/03/2009, 14h25
  3. GetDlgItem return NULL pointer
    Par karim2009 dans le forum Visual C++
    Réponses: 33
    Dernier message: 09/02/2009, 18h45
  4. getNamespaceURI return null
    Par *alexandre* dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 03/10/2007, 14h23
  5. Pointeur intelligent boost : return NULL ->comment faire?
    Par choinul dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 21/12/2005, 16h24

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