А вот еще один, используя 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))