我需要使用三个字符而不是一个字符来获取列的值。如何获得包含三个字符的结果
这是我的要求:select rank() over (order by 1,2,32) from dual
而这些是结果:
我需要得到001
代替1
感谢您的帮助
我需要使用三个字符而不是一个字符来获取列的值。如何获得包含三个字符的结果
这是我的要求:select rank() over (order by 1,2,32) from dual
而这些是结果:
我需要得到001
代替1
感谢您的帮助
使用LPAD()
:
SELECT LPAD('1', 3, '0') FROM DUAL;
输出:
001
所以它包裹查询:
SELECT LPAD(rank() over (order by 1,2,32), 3, '0')
FROM DUAL;
IMO,您可以使用SUBSTR()
这样的:
SELECT SUBSTR('000' || CAST((RANK() OVER (ORDER BY 1,2,32)) AS VARCHAR(3)), -3, 3)
FROM DUAL;
尚未进行测试; )。
可能是最直接的解决方案:
select to_char(rank() over (order by 1,2,32),'fm000') from dual
这是一个解决方案也非常感谢 – Abderrahim
select lpad(rank() over (order by 1,2,32),3,0) from dual;
select substr('00' || rank() over (order by 1,2,32),1,3) from dual;
是感谢您的回答 – Abderrahim