Sql Server 中的 自定义函数

谨以此文记住自己写的函数:

背景条件:SQL Server 2008

想要实现的效果      1001==》》1200000001001


函数内容:

自定义函数,用指定的开始字符串填充字段的左侧

函数名:LFORMAT

参数:@SourceStr;原始字段varchar(50)

            @NewFirstWord :填充后的首字符,最多5位 varchar型

            @NewIdLength:填充后的长度,int型

            @ExceptWord:要排除的值




create function LFORMAT(@SourceStr varchar(50),@NewFirstWord varchar(5),@NewIdLength int,@ExceptWord varchar(5)='')
returns varchar(50)
as
begin
         declare @l varchar(50)
         declare @s varchar(50)
set @l=''
set @s=''

if(@SourceStr is null)
begin
       select @l=@SourceStr
end

if(@ExceptWord <> '')
begin
         if((select CHARINDEX(@ExceptWord,@SourceStr,0))>0)
         begin
                    select @l=@SourceStr
         end
         else
  begin
       select @l = replicate('0',@NewIdLength-LEN(@SourceStr))+@SourceStr
if(LEN(@l)>@NewIdLength)
begin
select @s = Right(@l,@NewIdLength-LEN(@NewFirstWord))
select @l = @NewFirstWord+@s
end
else
begin
select @l = replicate('0',@NewIdLength-LEN(@SourceStr))+@SourceStr
select @s = Right(@l,@NewIdLength-LEN(@NewFirstWord))
select @l = @NewFirstWord+@s
end
           end
end
else
begin
select @l = replicate('0',@NewIdLength-LEN(@SourceStr))+@SourceStr
if(LEN(@l)>@NewIdLength)
begin
      select @s = Right(@l,@NewIdLength-LEN(@NewFirstWord))
      select @l = @NewFirstWord+@s
end
else
begin
     select @l = replicate('0',@NewIdLength-LEN(@SourceStr))+@SourceStr
     select @s = Right(@l,@NewIdLength-LEN(@NewFirstWord))
      select @l = @NewFirstWord+@s
end
end
return @l
end


例子:  LFORMAT('2001','12',10,default)  返回值:12000002001

             或 LFORMAT(列名,'1',10,default) 


             LFORMAT('CHINA','12',10,'CHINA')   返回值:CHINA

             或 FORMAT(列名,'12',10,'CHINA')     那么,这个列中,所有包含CHINA的值不会被替换,其他值则替换


  







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值