在插入case when语句时,由于我的case when, 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)我的错误是由于,如果分钟的开始时间和结束时间是空的,它会自动添加一个"0"后面。即使我将'0'更改为null,它仍然会在后面添加0。
我可以知道是否有另一种方法来放置'0'值?
谢谢
不是将小时数和分钟数串联起来,而是将它们相加。例如,3小时0分钟是3 + 0 = 3
小时,而不是3 || 0 = 30
小时。
换句话说,将||''||
更改为+
。