2017-02-22 13 views
0

У меня есть столбец базы данных, который является текстовой строкой. Некоторые из значений, какSQL Command to zero pad значение столбца

"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

Является ли это всегда 'гггг-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

 Смежные вопросы

  • Нет связанных вопросов^_^