在我插入case语句时,由于我的情况,oracle会在任何固定数字后面自动插入另一个'0'。
例如:
INSERT INTO test
(test_date,
testno,
hours)
SELECT '20-OCT-2010',
'1234',
CASE
WHEN Extract(DAY FROM( endtime - starttime )) >= 1 THEN (
Extract(DAY FROM(
endtime - starttime ))
* 24 + Extract
(HOUR FROM(
endtime - starttime
)) )
WHEN starttime IS NULL
AND endtime IS NULL THEN 0
ELSE ( Extract(HOUR FROM( endtime - starttime )) )
END
||''
|| CASE
WHEN endtime IS NULL
AND starttime IS NULL THEN 0
ELSE Extract(MINUTE FROM ( endtime - starttime )) / 60
END AS hours
FROM testtime
我的结果来自上述声明:
Test_Date TestNo Hours
20-OCT-2010 1234 140
预期结果:
Test_Date TestNo Hours
20-OCT-2010 1234 14
我的小时数据类型是数字(4,2) 我的错误是由于如果分钟的starttime和endtime为null,它将自动在它后面添加一个'0'。即使我将'0'更改为null,它仍会添加0。
我知道是否有其他方法可以设置'0'值?
由于
答案 0 :(得分:1)
您应该添加它们,而不是连接小时数和分钟数(分为六十分)。例如,3小时0分钟为3 + 0 = 3
小时,而不是3 || 0 = 30
小时。
换句话说,将您的||''||
更改为+
。