gpt4 book ai didi

sql - 如何在 Oracle SQL 查询中的数字中添加前导零?

转载 作者:行者123 更新时间:2023-12-03 21:17:47 25 4
gpt4 key购买 nike

我正在使用 COUNT() 函数在我的查询中检索名为 remove_count 的列。在结果集中,removal_count 的数据类型是 BIGDECIMAL。我想将数字转换为五位数字。所以如果值小于五位数,那么它应该用前导零表示。

例如 1) 如果移除计数为 540,则显示 00540
2) 如果移除计数为 60,则显示 00060

如果删除计数是整数/字符串值,那么我可以使用 java 表达式添加前导零:

--if removal_count is integer--
String.format("%05d",removal_count)

--if removal_count is string--
("00000"+removal_count).subString(removal_count.length())

我们可以将removing_count 转换为字符串或整数(从大十进制),以便我可以使用给定的java 表达式?或者有什么方法可以在查询本身中添加前导零?

最佳答案

你可以通过两种方式做到这一点。

方法一

使用 LPAD .

例如,

SQL> WITH DATA(num) AS(
2 SELECT 540 FROM dual UNION ALL
3 SELECT 60 FROM dual UNION ALL
4 SELECT 2 FROM dual
5 )
6 SELECT num, lpad(num, 5, '0') num_pad FROM DATA;

NUM NUM_P
---------- -----
540 00540
60 00060
2 00002

SQL>

WITH 子句只是为演示构建示例数据,在您的实际查询中只需执行以下操作:
lpad(removal_count, 5, '0')

请记住,一个 号码 不能有 前导零 .上述查询的输出是 字符串 而不是 号码 .

方法二

使用 TO_CHAR 和格式模型:
SQL> WITH DATA(num) AS(
2 SELECT 540 FROM dual UNION ALL
3 SELECT 60 FROM dual UNION ALL
4 SELECT 2 FROM dual
5 )
6 SELECT num, to_char(num, '00000') num_pad FROM DATA;

NUM NUM_PA
---------- ------
540 00540
60 00060
2 00002

SQL>

更新 : 为避免用于减号的额外前导空格,请使用 调频 TO_CHAR格式:

无调频:
SELECT TO_CHAR(1, '00000') num_pad,
LENGTH(TO_CHAR(1, '00000')) tot_len
FROM dual;

NUM_PAD TOT_LEN
------- ----------
00001 6

调频:
SELECT TO_CHAR(1, 'FM00000') num_pad,
LENGTH(TO_CHAR(1, 'FM00000')) tot_len
FROM dual;

NUM_PAD TOT_LEN
------- ----------
00001 5

关于sql - 如何在 Oracle SQL 查询中的数字中添加前导零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31693521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com