相比之下,说:

REPLICATE(@padchar, @len - LEN(@str)) + @str

当前回答

select right(replicate(@padchar, @len) + @str, @len)

其他回答

这个怎么样:

replace((space(3 - len(MyField))

3是要填充的零的个数

我希望这能帮助到一些人。

STUFF ( character_expression , start , length ,character_expression )

select stuff(@str, 1, 0, replicate('0', @n - len(@str)))

我喜欢vnRocks的解决方案,这里是一个udf的形式

create function PadLeft(
      @String varchar(8000)
     ,@NumChars int
     ,@PadChar char(1) = ' ')
returns varchar(8000)
as
begin
    return stuff(@String, 1, 0, replicate(@PadChar, @NumChars - len(@String)))
end

有几个人给出了不同的版本:

right('XXXXXXXXXXXX'+ @str, @n)

要小心,因为如果它比n长,它会截断实际数据。

这是我通常如何填充一个varchar

WHILE Len(@String) < 8
BEGIN
    SELECT @String = '0' + @String
END