查询语句时的情况

时间:2011-11-19 17:54:46

标签: sql oracle select insert

在我插入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'值?

由于

1 个答案:

答案 0 :(得分:1)

您应该添加它们,而不是连接小时数和分钟数(分为六十分)。例如,3小时0分钟为3 + 0 = 3小时,而不是3 || 0 = 30小时。

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