2016-02-26 23 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; 
相關問題