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 字体中会发现它们的宽度都相同,实际计算字符数也是如此。
我有一个可以工作的函数,但是它返回的是可变长度???
[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 字体中会发现它们的宽度都相同,实际计算字符数也是如此。