Мне нужно обнулить мой столбец идентификаторов для ввода выпадающих списков, например
001 текст элемента
101 текст элемента 2
но если числа пошли только до 80, то мы должны иметь
01 текст элемента
80 текст элемента
и так далее, так как яМне нужно написать это и разрешить вводить десятки / тысячи / миллионы элементов, я не знаю, сколько нужно мне в 0.
У меня есть следующее
Функция SQL
-- Create a function to add 0's to the left of a string.
--Usage:
ALTER FUNCTION [dbo].[LEFTPADNUMERIC]
(@SourceString VARCHAR(MAX),
@FinalLength INT)
RETURNS VARCHAR(MAX)
AS
BEGIN
RETURN
(SELECT Replicate('0',@FinalLength - Len(@SourceString)) + @SourceString)
END
И это используется так:
SELECT T.Id, dbo.LEFTPADNUMERIC(Cast(T.Id AS VARCHAR(32)), (Select LEN(CAST(MAX(Id) as varchar(32))) From Task) ) + SPACE(1) + TT.TaskName
FROM Task T
JOIN TaskTranslation TT ON TT.Id = T.Id AND TT.Language = blah blah blah on and on
знаете ли вы лучший, более эффективный способ?
Будет ли рассчитываться макс каждый раз,или SQL достаточно умный, чтобы запомнить это?
Заранее спасибо.