2017-02-22 4 views
0

私はテキスト列であるデータベース列を持っています。一部の値はカラム値をゼロにするSQLコマンド

"12345" 

のようなものなど、いくつかの年+連番のとおりです。私はテーブル全体のために

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

に列値を更新したい

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

。 これを行う方法がわかりません。どんな助けもありがとう。

このような何かを行う必要があります
rptnum = cast(year(getdate()) as varchar) 
+ '-' + RIGHT('000'+ISNULL(Cast((select count(*) 
from dbo.tablename where rptyr = (year(getdate()))) + 1 as varchar),''),3), 
+0

は後にのみ1桁で、それは常に 'YYYY-N 'ですダッシュ?または、ダッシュの後に数桁にすることはできますか? – 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

関連する問題