2016-07-28 58 views
1

我在SQL查詢初學者,我試圖更新一樣,我行:PostgreSQL的更新行固定位數

1 ---> 0001

15 - > 0015

254 - > 0254

1458 - > 1458

我列的類型是文本,有很多列的,所以我不能用

0處理
update table1 set col1 = 0001 where col1 = 1; 

等..

這看起來簡單的問題,但研究後,我無法找到一個解決方案。我需要的是類似的東西

foreach row in col1 
if((int)row>0 and < 10) 
then row = "000" + row; 

所有文本都是infact整數值,但我必須保留它們作爲文本。上面的代碼是什麼SQL查詢?

感謝

+0

該列的數據類型是什麼?如果它是一個數字,它將永遠不會存儲前導零。 –

+0

不,它的類型是文本。 (如字符串) – onur

回答

2

可以使用lpad()功能:

update table1 
    set col1 = lpad(col1, 4, '0') 
where length(col1) < 4; 

但真正的問題是:你爲什麼要存儲號碼的文本值?這幾乎總是一個不好的選擇。

+0

謝謝,它的工作原理,但一定沒有什麼變化。我們必須將col1更改爲'0'。這對我有用: update table1 set col1 = lpad(col1,4,'0')where length(col1)<4; – onur