2017-05-11 79 views
0

我有一個'@ 0001'格式的varchar,我需要將值增加1以使結果爲@ 0002.這個結果直到@ 9999。如何在sql中增加一個具有前導零的varchar

PLS建議

+2

編輯你正在使用的數據庫的問題和標籤。 –

+0

你應該改變你的數據模型。如果這個數字對你有意義(你想做一個計算),爲什麼不把它作爲一個數字來存儲(即數字1而不是字符串'@ 0001')? –

+0

@ 9999變成了什麼? – HLGEM

回答

0

對於MySQL:

UPDATE my_table SET my_column = 
    concat('@', lpad(to_number(substr(my_column, 2, 4)) + 1, 4, '0000')); 

同樣的想法,但與其他數據庫不同的功能。

+0

這將如何處理@sign? – HLGEM

+1

哎呀...是的@sign ...編輯。謝謝! –

0

對於SQl服務器,這將起作用,但請注意,在值爲@ 9999的情況下,它將返回@ 0000。如果你想要把它移到五個字符,它會變得更加複雜。如果您的@符號後面有少於4個字符的數據點,這也更加複雜。

create table #temp (id varchar(50)) 
insert into #temp (id) values ('@0001'), ('@0991'), ('@9999') 

select id, '@'+right('0000' +cast(cast (Right(id, 4) as Int) + 1 as varchar(50)), 4) from #temp 

這樣做的潛在複雜性和處理數據問題的意思,這是你不想做一個大的數據集和東西的,將必須進行調整或作出更爲複雜的能力處理值增加四個字符或如果第一個字符可能不同。就個人而言,如果您需要以超過one_tiem轉換的方式執行此操作,我會發現最好將數據正確存儲在其組件中。