2016-01-13 67 views
0

我有一個可以工作的函數,但它返回可變長度嗎?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 

我的輸出是這樣的:

enter image description here

白麪包(厚)*********************** ******** 2.75麪包
白麪包(薄)************************ 2.75麪包
黑麪包*********************************** 2.75麪包
石磨地面全麥麪包***************************** 2.75麪包
黑麥麪包***** ************************************ 3.50麪包
9粒麪包******* ****************************** 2.75麪包
葡萄乾麪包************** ******************** 3.25麪包
法式長棍麪包********************* ******************** 2.25麪包
爲什麼不確定爲什麼會發生這種情況?

+0

您能否將結果作爲實際結果發佈,而不是圖片?另外,你是如何稱呼你的功能來獲得這些結果的? –

+0

這不是固定寬度的字體。你確定長度不一樣嗎? –

+0

dbo.StringPadright(rtrim(p.Name_en),50,'。')是調用函數 – ookie

回答

1

您的功能正在按預期工作。所有字符串結果都是相同的長度。它們看起來像不同的長度,因爲你正在以可變寬度字體查看它們,其中一些字符比其他字符寬。

將您的結果粘貼到快遞字體中顯示它們的寬度都是一樣的,就像實際計算字符一樣。

+0

是的,OMG,這是它需要使用固定的字體:D非常感謝大家.. – ookie