相比之下,说:

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

当前回答

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

其他回答

我喜欢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

这个怎么样:

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

3是要填充的零的个数

在SQL Server 2005及以后的版本中,您可以创建一个CLR函数来完成此操作。

这是一个简单的左填充方法:

REPLACE(STR(FACT_HEAD.FACT_NO, x, 0), ' ', y)

其中x是填充号y是填充字符。

示例:

REPLACE(STR(FACT_HEAD.FACT_NO, 3, 0), ' ', 0)

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

STUFF ( character_expression , start , length ,character_expression )

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