SQL将百分数替代为折扣函数,输入字符串输出字符串

SQL函数 get_promotion_clear(@promotion varchar(1000))执行后返回字符串出来

CREATE  function [dbo].[Get_Num_forward](@vStr varchar(500),@posi int)
returns varchar(500)
/***找出字符串中 某个特定字符前  的数字(包括整数、小数)***/
as
begin
 declare @c varchar(1);
 declare @new varchar(500);
 declare @i int;
 set @new='';
 set @i=@posi-1;
  while @i<=LEN(@vStr)
  begin
   set @c=substring(@vStr,@i,1)
   if isnumeric(@c)=1 and @c <> '-' and @c <> '+' and @c <> ','
   begin
    set @new+=@c
   end
   else if @c='.'
   begin
    set @new+=@c
    set @i=@i-1;
   end
   else 
   begin
    return  reverse(@new)
   end
   set @i=@i-1;
  end 
  return reverse(@new)
end
create function dbo.get_promotion_clear(@promotion varchar(1000))
returns varchar(1000)
/***替代字符串中百分数部分,替代为打折数***/
as
begin
    declare @rep float
    declare @repchar varchar(500)
    declare @position int
    declare @value varchar(500)
    select @position=charindex('%',@promotion)
    select @rep=dbo.Get_Num_forward(@promotion,@position)
    set @value=10-@rep*0.1
    set @repchar=@rep 
    set @promotion=replace( @promotion, '减'+@repchar+'%', '打'+@value+'折')   
    return @promotion
 end

实例
select dbo.get_promotion_clear('满128元,可减12.5%&&购买1件可优惠换购热销商品&&京东秒杀:54.70')
go
select dbo.get_promotion_clear('满228元,可减23%&&购买1件可优惠换购热销商品&&京东秒杀:54.70')
go
select dbo.get_promotion_clear('满328元,可减40%&&购买1件可优惠换购热销商品&&京东秒杀:54.70')
go

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值