您的位置:首页 > 数据库

[转载]实现PadLeft的SQL脚本

2012-02-10 16:02 375 查看
C#有个函数PadLeft函数:右对齐此实例中的字符,在左边用空格或指定的 Unicode 字符填充以达到指定的总长度。SQL中我们也可能有这种需求.比如字符串希望保持7位不足7位前面用0补全.

1 -------- 0000001

109 ------ 0000109

0987 ----- 0000987

解决方案1:使用RIGHT,REPLICATE函数

CREATE FUNCTION dbo.PadLeft

(

@len int,

@string VARCHAR(max),

@padchar CHAR(1))

RETURNS VARCHAR(255) AS

BEGIN

RETURN RIGHT(

REPLICATE(@padchar, @len) + CONVERT (VARCHAR(MAX), @string),

@len

)

END

GO

解决方案2:使用REPLACE和SPACE函数

CREATE FUNCTION dbo.PadLeft

(

@len int,

@string VARCHAR(max),

@padchar CHAR(1))

RETURNS VARCHAR(255) AS

BEGIN

RETURN LTRIM(RTRIM(

CASE

WHEN LEN(@string) < @len

THEN REPLACE(SPACE(@len - LEN(@string)), ' ', @padchar) + @string

ELSE @string

END

)

)

END

GO

解决方案3:使用REPLICATE和ISNULL函数

CREATE FUNCTION dbo.PadLeft

(

@len int,

@string VARCHAR(max),

@padchar CHAR(1)

)

RETURNS VARCHAR(max)

AS

BEGIN

RETURN ISNULL(REPLICATE(@padchar, @len - LEN(@string)), '')

+ CAST(@string AS VARCHAR)

END

GO

调用示例:

select dbo.PadLeft(7,'123','0') --0000123

原载:IT智库网 链接:http://www.it118.org/specials/c9fba99e-4401-49cf-8256-ac3c1a34c0d9/a483105c-9912-4ef6-92e8-091a28510944.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: