我有一列不同长度的数字,我想用零填充它们,这样它们就像最大的数字一样长。像这样:
SQL> SELECT LPAD(PROD_ID, 5, 0) AS PROD_ID
2 FROM PRODUCTS_TBL;
PROD_
-----
11235
00119
00013
00015
00222
00301
00302
00303
00006
00087
00009
00090
但是我不想使用数字5,我想在PROD_ID上使用一个函数,以防它稍后更改。我试过了
SQL> SELECT LPAD(PROD_ID, MAX(LENGTH(PROD_ID)), 0)
2 FROM PRODUCTS_TBL;
但
SELECT LPAD(PROD_ID, MAX(LENGTH(PROD_ID)), 0)
*
ERROR at line 1:
ORA-00937: not a single-group group function
有什么建议吗?
答案 0 :(得分:5)
我自己无法测试,但如果你尝试
会怎样SELECT LPAD(PROD_ID,
MAX(LENGTH(PROD_ID)) OVER (),
0)
FROM PRODUCTS_TBL;
答案 1 :(得分:0)
可能最好分两步完成。在一个查询中首先选择最大长度,然后运行选择实际数据的第二个查询。可以通过连接来实现,但它可能表现不佳。