2017-02-22 75 views
0

我有一個數據庫列,它是一個文本字符串。一些值都喜歡用於填零列值的SQL命令

"12345" 

,有些是截至今年+順序號,如:

"2016-1, 2016-2, 2016-3, 2017-1, 2017-2, 2017-3" etc. 

我想更新的列值

"2016-001, 2016-002, 2016-003, 2017-001, 2017-002, 2017-003" 

整個表格。 我不知道如何做到這一點。任何幫助,將不勝感激。我已經更新了我的存儲過程作爲這樣的零填充,以產生新的號碼,如:

rptnum = cast(year(getdate()) as varchar) 
+ '-' + RIGHT('000'+ISNULL(Cast((select count(*) 
from dbo.tablename where rptyr = (year(getdate()))) + 1 as varchar),''),3), 
+0

是否總是'YYYY-N',用後只有1位破折號?或者可以在短劃線之後有幾個數字? – jarlh

+0

嗯,它可以是幾個後,它得到更高的數字。 2016-10,2016-100。每年從未超過3次。 – PigsIncorporated

+0

getdate()需要當前年份,因此您將有2017年到處 – Whencesoever

回答

1

像這樣的東西應該做的:

select left(rptnum, charindex('-', rptnum))+right('000'+substring(rptnum, charindex('-', rptnum)+1, 10), 3) 
+0

就是這樣!謝謝! – PigsIncorporated