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 :

Order by classe en varchar au lieu de date avec un decode [11g]


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Data Analyst
    Inscrit en
    Décembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Data Analyst

    Informations forums :
    Inscription : Décembre 2024
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Order by classe en varchar au lieu de date avec un decode
    Bonjour,

    Est-ce que vous pouvez me donner la raison pour laquelle l'usage de decode qui retourne une date va classer les résultats en varchar au lieu de les classer par date. Je n'observe pas ce comportement avec l'usage d'un case when.

    Voici l'exemple d'une requête que vous pouvez tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    --- select où l'order by classe en date
    select "Date"
     
    --- select où l'order by classe en varchar
    select decode (1 , 0 ,null, "Date") as "Date"
     
    --- select où l'order by classe en date
    select case when 1 = 0 then null else "Date" end as "Date"
     
    from
        (select to_date ('10/05/2024', 'dd/mm/yyyy') as "Date"
        from dual
        union all
        select to_date ('05/06/2024', 'dd/mm/yyyy') as "Date"
        from dual)
    order by "Date"
    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 322
    Points : 13 097
    Points
    13 097
    Par défaut
    Bonjour,
    C'est expliqué dans l'aide en ligne:
    ...
    If the first result has the data type CHAR or if the first result is null, then Oracle converts the return value to the data type VARCHAR2.
    ...
    Dans ton exemple le premier "result" est null, donc le résultat de DECODE sera un varchar2.

    Tatayo.

  3. #3
    Candidat au Club
    Homme Profil pro
    Data Analyst
    Inscrit en
    Décembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Data Analyst

    Informations forums :
    Inscription : Décembre 2024
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Ah oui en effet ! Merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 165
    Points : 1 963
    Points
    1 963
    Par défaut
    Bonjour,

    Oui c'est le comportement attendu de DECODE, comme indiqué dans la doc:

    https://docs.oracle.com/en/database/...rf/DECODE.html

    If the first result has the data type CHAR or if the first result is null, then Oracle converts the return value to the data type VARCHAR2.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/09/2011, 14h22
  2. État : succession de "d" au lieu de dates
    Par Skezi dans le forum IHM
    Réponses: 1
    Dernier message: 02/10/2008, 17h40
  3. Recherche sur date avec une colonne de type varchar
    Par Cladjidane dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/08/2008, 23h35
  4. ORDER BY sur type VARCHAR
    Par ep31 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 05/10/2007, 16h20
  5. Valeur varchar dans un champ date.
    Par D_light dans le forum Oracle
    Réponses: 3
    Dernier message: 31/08/2007, 15h33

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