实际产量:123456预期输出:十二点三十四分五十六秒
3wabscal1#
或者,尝试使用正则表达式,例如
SQL> select rtrim(regexp_replace('123456', '(\d{2})', '\1:'), ':') result 2 from dual; RESULT -------- 12:34:56 SQL>
1cklez4t2#
查询:您可以使用SUBSTR()对数字进行切片,并使用||将它们合并到一起。
SUBSTR()
||
select SUBSTR(nbr,1,2)||':'||SUBSTR(nbr,3,2)||':'||SUBSTR(nbr,5,2) result from (select 123456 nbr from dual)
输出:| 结果|| - -----|| 十二点三十四分五十六秒|fiddle
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,因为我更喜欢使用正则表达式来完成这类任务,因为它们很简洁。
REGEXP_REPLACE
zazmityj4#
如果你有一个时间,然后将数字转换为DATE,然后将其格式化为字符串:
DATE
SELECT TO_CHAR(TO_DATE(123456, 'HH24MISS'), 'HH24:MI:SS') AS time FROM DUAL;
其输出:| 时间|| - -----|| 十二点三十四分五十六秒|fiddle
4条答案
按热度按时间3wabscal1#
或者,尝试使用正则表达式,例如
1cklez4t2#
查询:您可以使用
SUBSTR()
对数字进行切片,并使用||
将它们合并到一起。输出:
| 结果|
| - -----|
| 十二点三十四分五十六秒|
fiddle
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”。
我在这里使用
REGEXP_REPLACE
,因为我更喜欢使用正则表达式来完成这类任务,因为它们很简洁。zazmityj4#
如果你有一个时间,然后将数字转换为
DATE
,然后将其格式化为字符串:其输出:
| 时间|
| - -----|
| 十二点三十四分五十六秒|
fiddle