SELECT DECODE (SYSDATE, SYSDATE + 1, NULL, SYSDATE)
FROM DUAL;
SELECT DECODE (SYSDATE, SYSDATE + 1, TO_DATE (NULL), SYSDATE)
FROM DUAL;
为什么我从上面的查询中得到不同格式的结果?
我正在使用 Oracle 数据库 10g 企业版 10.2.0.4.0 - 64bi
最佳答案
decode
函数结果具有第三个参数的数据类型。在第一种情况下,由于没有为 NULL
指定数据类型,因此使用默认的 VARCHAR2。在第二种情况下,明确要求 DATE,因此结果是日期。
换句话说,第一个查询与:
SELECT DECODE(SYSDATE, SYSDATE + 1, to_char(NULL), to_char(SYSDATE)) FROM DUAL;
此查询的输出将根据您的 NLS_DATE_FORMAT
session 参数进行格式化,而第二个查询将返回一个日期,该日期将根据您的客户端设置显示。
关于不同格式的 Oracle Decode 函数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853420/