当前位置: 代码迷 >> Sql Server >> PadLeft 跟 PadRight
  详细解决方案

PadLeft 跟 PadRight

热度:81   发布时间:2016-04-24 09:38:14.0
PadLeft 和 PadRight

1 PadLeft

   即:向已知字符串左边补充字符,使整个字符串到达指定长度

 1 CREATE FUNCTION PadLeft 2 ( 3     @VarOrgan varchar(10),/*原始字符*/ 4     @TotalLength int,/*总长度*/ 5     @Placeholder varchar(1)/*占位符*/ 6 ) 7 RETURNS varchar(100) 8 AS 9 BEGIN10     declare @VarNew varchar(100),11             @PadLen int12     SET @VarNew=@VarOrgan13     SET @PadLen=@TotalLength-LEN(@VarOrgan)14     while(@PadLen>0)15         begin16             select @VarNew=@Placeholder+@VarNew17             set @PadLen=@PadLen-118         end19     return @VarNew20 END

 

2 PadRight

   即:向已知字符串右边补充字符,使整个字符串到达指定长度

 1 CREATE FUNCTION PadRight 2 ( 3     @VarOrgan varchar(10),/*原始字符*/ 4     @TotalLength int,/*总长度*/ 5     @Placeholder varchar(1)/*占位符*/ 6 ) 7 RETURNS varchar(100) 8 AS 9 BEGIN10     declare @VarNew varchar(100),11             @PadLen int12     SET @VarNew=@VarOrgan13     SET @PadLen=@TotalLength-LEN(@VarOrgan)14     while(@PadLen>0)15         begin16             select @VarNew=@VarNew+@Placeholder17             set @PadLen=@PadLen-118         end19     return @VarNew20 END

 

3 测试结果

SELECT dbo.PadLeft('7',6,'0') PadLeft,        dbo.PadRight('6',4,'0') PadRight

 

1楼nzperfect
好传统的方法。。,,SELECT RIGHT(#39;000000#39;+#39;7#39;,6),LEFT(#39;6#39;+#39;0000#39;,4)
Re: 孤星无泪
@nzperfect,有意思,Right(),Left()我从来没有这么用过,不过感觉挺巧妙的。,但是这样写的缺点是:如果我要组合长度为20或30的字符,写起来就麻烦了,万一数错0的个数就不行了。,附:我见过一个项目中的数据库,里面有个字段是32位的,若长度不足,就在前面补0。