Sql 如何使用to_number函数在Oracle中的数字中添加前导零

Sql 如何使用to_number函数在Oracle中的数字中添加前导零,sql,database,oracle11g,Sql,Database,Oracle11g,早期的V_开始时间类似于“1:00:00:00”,但现在它以0开头。然后问题来了。现在它返回null。如何解决这个问题。是的,试试看 V_START_TIME V_END_TIME OPERATION_Date STATUS_1 OT_ROOM_ID_1 01:00:00 01:00:00 24-Mar-17 AVAILABLE 1 02:00:00 02:00:00 24-Mar-17 LAPSED 1 03:00:00 03:0

早期的V_开始时间类似于“1:00:00:00”,但现在它以0开头。然后问题来了。现在它返回null。如何解决这个问题。

是的,试试看

 V_START_TIME V_END_TIME OPERATION_Date STATUS_1    OT_ROOM_ID_1  
 01:00:00   01:00:00    24-Mar-17   AVAILABLE   1
 02:00:00   02:00:00    24-Mar-17   LAPSED      1
 03:00:00   03:00:00    24-Mar-17   AVAILABLE   1
 04:00:00   04:00:00    24-Mar-17   AVAILABLE   1
 05:00:00   05:00:00    24-Mar-17   AVAILABLE   1
 06:00:00   06:00:00    24-Mar-17   AVAILABLE   1
 07:00:00   07:00:00    24-Mar-17   AVAILABLE   1
 08:00:00   08:00:00    24-Mar-17   AVAILABLE   1
 09:00:00   09:00:00    24-Mar-17   AVAILABLE   1
 10:00:00   10:00:00    24-Mar-17   AVAILABLE   1
 11:00:00   11:00:00    24-Mar-17   AVAILABLE   1
 12:00:00   12:00:00    24-Mar-17   AVAILABLE   1
 13:00:00   13:00:00    24-Mar-17   BOOKING     1
 14:00:00   14:00:00    24-Mar-17   AVAILABLE   1
 15:00:00   15:00:00    24-Mar-17   AVAILABLE   1
 16:00:00   16:00:00    24-Mar-17   AVAILABLE   1
 17:00:00   17:00:00    24-Mar-17   AVAILABLE   1
 18:00:00   18:00:00    24-Mar-17   AVAILABLE   1
 19:00:00   19:00:00    24-Mar-17   AVAILABLE   1
 20:00:00   20:00:00    24-Mar-17   AVAILABLE   1
 21:00:00   21:00:00    24-Mar-17   AVAILABLE   1
 22:00:00   22:00:00    24-Mar-17   AVAILABLE   1
 23:00:00   23:00:00    24-Mar-17   AVAILABLE   1
 00:00:00   00:00:00    24-Mar-17   AVAILABLE   1

数字不会有前导零 你能试一下吗

LPAD(收件人编号(SUBSTR('01:00:00',1,instr('01:00:00',':')-1)),2,0)

参考:

ORA-00932:不一致的数据类型:预期的数字得到了字符我尝试了这个alsotry解析两个值到varchari已经更改了注释,现在它将返回Varcharal我正在将这个值带入while循环。据我所知,我们无法在while循环中比较varchar,这就是我在上述代码中添加到_number的原因。如果您想在while中使用它作为数字,为什么需要将其显示为01?是的,我尝试过,但lpad在这种情况下没有帮助。您已经得到了两个答案,但似乎没有一个适合您的需要。这应该是一个很好的理由来改进你的问题,让它更清楚。尝试构建一个示例表,发布格式良好的示例数据,显示您的查询应该为该数据提供什么。这可能是有用的。这样的编辑将使问题变得更好,并帮助人们帮助您
to_number()
不能用于此。您需要使用
to_char()
来格式化一个数字。另外:您应该使用
提取(从V_开始时间算起的小时数)
 V_START_TIME V_END_TIME OPERATION_Date STATUS_1    OT_ROOM_ID_1  
 01:00:00   01:00:00    24-Mar-17   AVAILABLE   1
 02:00:00   02:00:00    24-Mar-17   LAPSED      1
 03:00:00   03:00:00    24-Mar-17   AVAILABLE   1
 04:00:00   04:00:00    24-Mar-17   AVAILABLE   1
 05:00:00   05:00:00    24-Mar-17   AVAILABLE   1
 06:00:00   06:00:00    24-Mar-17   AVAILABLE   1
 07:00:00   07:00:00    24-Mar-17   AVAILABLE   1
 08:00:00   08:00:00    24-Mar-17   AVAILABLE   1
 09:00:00   09:00:00    24-Mar-17   AVAILABLE   1
 10:00:00   10:00:00    24-Mar-17   AVAILABLE   1
 11:00:00   11:00:00    24-Mar-17   AVAILABLE   1
 12:00:00   12:00:00    24-Mar-17   AVAILABLE   1
 13:00:00   13:00:00    24-Mar-17   BOOKING     1
 14:00:00   14:00:00    24-Mar-17   AVAILABLE   1
 15:00:00   15:00:00    24-Mar-17   AVAILABLE   1
 16:00:00   16:00:00    24-Mar-17   AVAILABLE   1
 17:00:00   17:00:00    24-Mar-17   AVAILABLE   1
 18:00:00   18:00:00    24-Mar-17   AVAILABLE   1
 19:00:00   19:00:00    24-Mar-17   AVAILABLE   1
 20:00:00   20:00:00    24-Mar-17   AVAILABLE   1
 21:00:00   21:00:00    24-Mar-17   AVAILABLE   1
 22:00:00   22:00:00    24-Mar-17   AVAILABLE   1
 23:00:00   23:00:00    24-Mar-17   AVAILABLE   1
 00:00:00   00:00:00    24-Mar-17   AVAILABLE   1
SELECT (
  CASE
    WHEN (SUBSTR('01:00:00',1,instr('01:00:00',':')-1))='00'
    THEN '24'
    ELSE LPAD(SUBSTR('01:00:00',1,instr('01:00:00',':')-1),2,'0')
  END)
FROM dual;