【发布时间】:2023-03-22 01:13:01
【问题描述】:
谁能帮我理解为什么 oracle db 在使用/不使用 CASE 语句时返回不一致的结果。
SELECT NVL(CASE WHEN '' IS NULL THEN NULL ELSE NULL END ,TO_DATE('19010101', 'YYYYMMDD')) a,
NVL(CASE WHEN '' IS NOT NULL THEN NULL ELSE NULL END ,TO_DATE('19010101', 'YYYYMMDD')) b,
NVL(CASE WHEN '' = '' THEN NULL ELSE NULL END ,TO_DATE('19010101', 'YYYYMMDD')) c,
NVL(NULL ,TO_DATE('19010101', 'YYYYMMDD')) d from dual;
我的实际查询使用TRUNC(NVL(:NEW_FORM_TIME_END, TO_DATE('19010101', 'YYYYMMDD'))) >= TRUNC(SYSDATE - INTERVAL '2' DAY),其中NEW_FORM_TIME_END 可能是空字符串或NULL,但我收到此错误ORA-06550: line 240, column 91: PLS-00306: wrong number or types of arguments in call to '>=' ORA-06550: line 229, column 9: PL/SQL: Statement ignored
【问题讨论】:
标签: php oracle case oracle18c nvl