如何在oracle sql表中的数字之间添加冒号(:)?

ia2d9nvy  于 2023-06-05  发布在  Oracle
关注(0)|答案(4)|浏览(299)

实际产量:
123456
预期输出:
十二点三十四分五十六秒

3wabscal

3wabscal1#

或者,尝试使用正则表达式,例如

SQL> select rtrim(regexp_replace('123456', '(\d{2})', '\1:'), ':') result
  2  from dual;

RESULT
--------
12:34:56

SQL>
1cklez4t

1cklez4t2#

查询:您可以使用SUBSTR()对数字进行切片,并使用||将它们合并到一起。

select SUBSTR(nbr,1,2)||':'||SUBSTR(nbr,3,2)||':'||SUBSTR(nbr,5,2) result from
(select 123456 nbr from dual)

输出:
| 结果|
| - -----|
| 十二点三十四分五十六秒|
fiddle

zbdgwd5y

zbdgwd5y3#

您显示了数字123456,并希望将其格式化为12:34:56。所以你想从一个数字得到一个字符串。由于'12:34:56'不是数字123,456的表示形式(就像'123,456'或'123,456'或'123456.0'一样),您需要两个步骤:
1.将数字123456转换为字符串'123456'。
1.使用字符串操作函数将字符串“123456”转换为“12:34:56”。
我不知道你在处理什么数字。它可以有八位数,你想把它分成两组吗?它能有七位数吗?如果是,如何格式化它们?
在下面的例子中,我假设1到6个数字,我们将创建前导零。例如,0变为“00:00:00”。

select regexp_replace(to_char(num, 'fm000000'), '^(\d\d)(\d\d)(\d\d)$', '\1:\2:\3')
from mytable;

我在这里使用REGEXP_REPLACE,因为我更喜欢使用正则表达式来完成这类任务,因为它们很简洁。

zazmityj

zazmityj4#

如果你有一个时间,然后将数字转换为DATE,然后将其格式化为字符串:

SELECT TO_CHAR(TO_DATE(123456, 'HH24MISS'), 'HH24:MI:SS') AS time
FROM   DUAL;

其输出:
| 时间|
| - -----|
| 十二点三十四分五十六秒|
fiddle

相关问题