Вы должны прочитать о типах данных.INT
отмечает больше, чем битовый паттерн.Всякий раз, когда вы видите число в удобочитаемом формате, фактическое значение переводится в строку, состоящую из цифр.Но этот цифровой формат не является действительным INT
.
Ведущие нули никогда не являются частью самого INT
, но могут быть добавлены в строковое представление.Таким образом, ваш вопрос (взятый буквально) на самом деле не имеет никакого смысла.
Если есть строка типа 00012
, и вы хотите использовать ее как число, вы должны просто привести ее:
SELECT CAST('00012' AS INT) + 2; --14
Другие ответы показывают вам некоторые подходы для получения строкового представления из INT
, но это противоположное направление:
SELECT REPLACE((STR(12,5),' ','0'); --00012
Вы можете объединить эти подходы:
DECLARE @PaddedNumber CHAR(5)='00012'
SELECT REPLACE(STR(CAST(@PaddedNumber AS INT) + 2,5),' ','0'); --00014
Заполненный номер (который - по типу! - строка) приводится к INT
, а затем используется в вычислениях.В результате получается INT
, который можно преобразовать в дополненную строку.Но тип окончательного результата - строка ...