SQL传参Map

思路:用varchar字符串进行传参,用“,”分割属性,用“;”分割个数,用SQL的临时表封装

代码:

declare @mapStr varchar(max) --key,val;key2,val2;

建立临时表:

if OBJECT_ID('tempdb..#tempTable') is not null drop table #tempTable
		   create table #tempTable(
			   id          int identity(1,1) not null,
			   key         varchar(32),
			   val         numeric(10, 4)
		   )	

核心代码:

declare @str varchar(32)
      while CHARINDEX(';',@mapStr)>0
      begin
           set @str = SUBSTRING(@mapStr,0,CHARINDEX(';',@mapStr));
           declare @key varchar(10),@value varchar(32);
           set @key = SUBSTRING(@str,0,CHARINDEX(',',@str));
           set @value = SUBSTRING(@str,CHARINDEX(',',@str)+1,LEN(@str));
           insert #tempTable(key,val) select @key,@value;
           set @skuQty = SUBSTRING(@mapStr,CHARINDEX(';',@mapStr)+1,LEN(@mapStr));
      end
      if @skuQty<>''
      begin
           declare @key2 varchar(32),@value2 numeric(10, 4);
           set @key2 = SUBSTRING(@mapStr,0,CHARINDEX(',',@mapStr));
           set @value2 = RTRIM(LTRIM(SUBSTRING(@mapStr,CHARINDEX(',',@mapStr)+1,LEN(@mapStr))));
           insert #tempTable(key,val) select @key2,@value2;
      end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值