2010-10-04 6 views
3
SELECT DECODE (SYSDATE, SYSDATE + 1, NULL, SYSDATE) 
    FROM DUAL; 


SELECT DECODE (SYSDATE, SYSDATE + 1, TO_DATE (NULL), SYSDATE) 
    FROM DUAL; 

Pourquoi puis-je obtenir les résultats dans différents formats à partir des requêtes ci-dessus?Résultats de la fonction Oracle Decode avec différents formats

J'utilise Oracle Database 10g Enterprise Edition de presse 10.2.0.4.0 - 64bi

+0

Pouvez-vous préciser ce que vous entendez par "formats différents"? Que voyez-vous exactement ces deux requêtes? –

+0

Le problème est la valeur nulle. Quel type de données est-ce? La deuxième requête renverra une date. Pour la première requête, il s'agit de varchar2 (8). – Rene

+0

désolé Justin, la première requête supprime la valeur renvoyée de sysdate, la seconde la renvoie avec ses valeurs heure, min etc. Mais je pense que René a déjà résolu mon problème :) – mutoss

Répondre

5

le résultat de la fonction decode a le type de données du troisième paramètre. Dans le premier cas, puisque aucun type de données n'est spécifié pour NULL, le VARCHAR2 par défaut est utilisé. Dans le second cas, une DATE est explicitement demandée et donc le résultat est une date.

En d'autres termes, la première requête est la même que:

SELECT DECODE(SYSDATE, SYSDATE + 1, to_char(NULL), to_char(SYSDATE)) FROM DUAL; 

La sortie de cette requête sera formaté selon votre paramètre de session NLS_DATE_FORMAT, alors que la seconde requête renverra une date qui sera affichée selon les paramètres de votre client.

Questions connexes