查询case when语句



在插入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小时。

换句话说,将||''||更改为+

最新更新