2016-02-26 58 views
0

我需要使用三个字符而不是一个字符来获取列的值。如何获得包含三个字符的结果

这是我的要求:select rank() over (order by 1,2,32) from dual

而这些是结果:

enter image description here

我需要得到001代替1

感谢您的帮助

回答

1

使用LPAD()

SELECT LPAD('1', 3, '0') FROM DUAL; 

输出:

001 

所以它包裹查询:

SELECT LPAD(rank() over (order by 1,2,32), 3, '0') 
FROM DUAL; 
+0

是感谢您的回答 – Abderrahim

0

IMO,您可以使用SUBSTR()这样的:

SELECT SUBSTR('000' || CAST((RANK() OVER (ORDER BY 1,2,32)) AS VARCHAR(3)), -3, 3) 
FROM DUAL; 

尚未进行测试; )。

1

可能是最直接的解决方案:

select to_char(rank() over (order by 1,2,32),'fm000') from dual 
+0

这是一个解决方案也非常感谢 – Abderrahim

0
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; 
相关问题