SQL 服务器中的标量值函数

Scalar- Valued Function in SQL Server

我有一个可以工作的函数,但是它返回的是可变长度???

[dbo].[StringPadRight]
   (@String as Varchar(max),
    @Length as int,
    @Char as char(1))
RETURNS Varchar(max)
AS
BEGIN
    Declare @PaddedString as Varchar(max)

    -- Return same string if @Length is smaller or equal to the length of @String value
    --  If(Len(@String) >= @Length )
    --       RETURN @String

    -- Create PaddedString
    Set @PaddedString = @String + Replicate('*', @Length - Len(@String))

    -- Return the PaddedString
    RETURN @PaddedString
 END

我的输出如下所示:

白面包(厚)********************************* 2.75 面包
白面包(薄)********************************* 2.75 面包
黑面包****************************************** 2.75 面包
石磨 WW 面包****************************** 2.75 面包
黑麦面包********************************************* 3.50 面包
9 粒面包*************************************** 2.75 面包
葡萄干面包****************************************** 3.25 面包
长棍面包********************************************* 2.25 面包
为什么不确定为什么会这样?

您的功能按预期运行。所有字符串结果的长度都相同。它们看起来只是长度不同,因为您正在以 variable-width 字体查看它们,其中一些字符比其他字符宽。

将您的结果粘贴到 courier 字体中会发现它们的宽度都相同,实际计算字符数也是如此。