ORACLE SQL CAST IN CASE 语句

Gav*_*vin 2 sql oracle integer casting case

有没有办法在 CASE 语句中将 CAST 转换为 INTEGER ?

CASE 
WHEN SV.END_DATE IS NOT NULL THEN SV.END_DATE - SV.START_DATE 
ELSE 0
END AS DAYDIFF
Run Code Online (Sandbox Code Playgroud)

Ale*_*ole 5

是的,您可以将该值转换为不带小数部分的数字数据类型:

CASE 
  WHEN SV.END_DATE IS NOT NULL THEN
    CAST(SV.END_DATE - SV.START_DATE AS NUMBER(38))
  ELSE 0
END AS DAYDIFF
Run Code Online (Sandbox Code Playgroud)

或者您可以截断 result,这也会删除值的小数部分:

CASE 
  WHEN SV.END_DATE IS NOT NULL THEN
    TRUNC(SV.END_DATE - SV.START_DATE)
  ELSE 0
END AS DAYDIFF
Run Code Online (Sandbox Code Playgroud)