Oracle - 检查空日期时出现不一致的数据类型错误

PT_*_*T_C 2 oracle date

我正在尝试为 aDate为 null的情况编写一个案例,但我不断收到此错误:

ORA-00932: inconsistent datatypes: expected CHAR got DATE
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)

代码非常简单。null与 a 比较时是否有不同的检查方法Date

case
    when cr.COMPLETED_DATE is null then '--'
    else cr.COMPLETED_DATE
  end completed_date,
Run Code Online (Sandbox Code Playgroud)

Pra*_*een 5

这里的问题在于case when语句的返回值

cr.COMPLETED_DATE is null then '--'
Run Code Online (Sandbox Code Playgroud)

返回string datatype

else cr.COMPLETED_DATE
Run Code Online (Sandbox Code Playgroud)

返回 a date datatype,因此错误

不一致的数据类型:预期的 CHAR 得到了 DATE

一种解决方法是将第二种情况的数据类型更改为 char

case
    when cr.COMPLETED_DATE is null then '--'
    else to_char(cr.COMPLETED_DATE, 'dd-mm-yyyy')
end completed_date,
Run Code Online (Sandbox Code Playgroud)

或使用像“约会1900-01-01”的日期是null

case
    when cr.COMPLETED_DATE is null then Date '1900-01-01'
    else cr.COMPLETED_DATE
end completed_date,
Run Code Online (Sandbox Code Playgroud)