Как мне преобразовать int в строку с добавлением нуля в T-SQL? - PullRequest
40 голосов
/ 21 ноября 2008

Допустим, у меня есть int со значением 1. Как я могу преобразовать это int в строку с дополнением нулями, например 00000001?

Ответы [ 12 ]

0 голосов
/ 10 октября 2014

А вот еще один, используя REPLICATE:

SELECT REPLICATE('0', 7) + '1'

Конечно, вы можете заменить литералы 7 и '1' соответствующими функциями по мере необходимости; Выше приведен ваш пример. Например:

SELECT REPLICATE('0', 8 - LEN(CONVERT(nvarchar, @myInt))) + CONVERT(nvarchar, @myInt)

будет дополнять целое число менее 8 мест нулями до 8 символов.

Теперь отрицательное число во втором аргументе REPLICATE вернет NULL. Итак, если это возможно (скажем, @myInt может быть больше 100 миллионов в приведенном выше примере), вы можете использовать COALESCE, чтобы вернуть число без начальных нулей, если есть более 8 символов:

SELECT COALESCE(REPLICATE('0', 8 - LEN(CONVERT(nvarchar, @myInt))) + CONVERT(nvarchar, @myInt), CONVERT(nvarchar, @myInt))
0 голосов
/ 21 ноября 2008

Или, если вы действительно хотите пойти на хардкор ...; -)

declare @int int
set @int = 1

declare @string varchar(max)
set @string = cast(@int as varchar(max))

declare @length int
set @length = len(@string)

declare @MAX int
set @MAX = 8

if @length < @MAX
begin
    declare @zeros varchar(8)
    set @zeros = ''

    declare @counter int
    set @counter = 0

    while (@counter < (@MAX - @length))
    begin
        set @zeros = @zeros + '0'
        set @counter = @counter + 1
    end
    set @string = @zeros + @string
end
print @string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...