【发布时间】:2020-01-27 23:40:58
【问题描述】:
我正在使用带有 Oracle Fusion 19c 的 BI Publisher
我正在尝试查看一个 1000 字的 VARCHAR 字段 (POH.NOTE_TO_VENDOR),然后如果它包含单词 Hearing 并且它后面的字符(substr 的第一部分)不为空,即存在日期。然后我想将整个 substr 转换为日期,否则留空。
我可以让串联的 substr 工作并将其显示为字符串,或者作为日期,或者如果它不存在,那么值是 '//' 但不能直接转换,因为如果值返回 '//' 它不会转换这是迄今为止。
, CASE WHEN SUBSTR(POH.NOTE_TO_VENDOR, (INSTR(POH.NOTE_TO_VENDOR,'Hearing: ')+14),2)IS NOT NULL
THEN (TO_DATE((SUBSTR(POH.NOTE_TO_VENDOR, (INSTR(POH.NOTE_TO_VENDOR,'Hearing: ')+17),2)||'/'||SUBSTR(POH.NOTE_TO_VENDOR, (INSTR(POH.NOTE_TO_VENDOR,'Hearing: ')+14),2)||'/'||SUBSTR(POH.NOTE_TO_VENDOR, (INSTR(POH.NOTE_TO_VENDOR,'Hearing: ')+11),2)),'DD/MM/YY'))
ELSE
END
此代码返回错误缺失关键字。我希望它将字符串转换为日期或返回一个空白值。
在没有 else 的情况下尝试了 else 条件
我也尝试过 Case when......then '1' else '0' 正确返回 1 和 0
【问题讨论】:
-
您应该在
ELSE之后添加一些内容。例如NULL。只是一个疯狂的猜测...... -
试过还是不行还是缺少关键字
-
或者删除 ELSE,如果 WHEN 失败,最终会导致 NULL。
-
也试过了
-
删除 else 仍然返回相同的错误
标签: sql