当前位置: 代码迷 >> Sql Server >> 求个sql有关问题
  详细解决方案

求个sql有关问题

热度:71   发布时间:2016-04-24 10:42:39.0
求个sql问题


--select * from dbo.json('{5,5,5,25,''dddd'',6}:
--{6,5,5,25,''dddd'',6}:
--{7,5,5,25,''dddd'',6}:
--{8,5,5,25,''dddd'',6}:
--{9,5,5,25,''dddd'',6}:')


create function Json(@bstring varchar(3000))
returns @sb table (gtypeid int, gnumber int,gprice money,gmoney money,oatype varchar(50),omonths int)
--{商品id,商品数量,商品价钱,商品金额,折旧类型,折旧年限}:
as
begin
declare @i int
declare @codeindex int --字符串当前位置
declare @brlen int--字符串替换前的长度
declare @itembs varchar(300)--临时变量
declare @arcount int--字符串替换后的长度
declare @valueindex int--字符串开始位置
declare @sql nvarchar(300)
set @i=0
set @arcount=0
--------求字符串中一共有多少个:
select @brlen=len(@bstring)
set @itembs=@bstring
set @bstring=replace(@bstring,':','')
set @arcount=@brlen-len(@bstring)
set @bstring=@itembs
----------求字符串循环结束
--insert into @sb(gtypeid,gnumber) values(@i,@arcount)
------把字符串进行分割,并插入到表中

set @i=0
while(@i<@arcount)
begin
set @i=@i+1
--获取第一个符号:所在位置
select @codeindex=patindex('%:%',@bstring)
--截取长度
select @itembs=substring(@bstring,0,@codeindex)

select @itembs=replace(@itembs,'{','')
select @itembs=replace(@itembs,'}','')
select @itembs=replace(@itembs,':','')
--把截取的字符串插入到表里
set @sql='insert into @sb values('+@itembs+')'
EXEC SP_EXECUTESQL @sql--,N'@itembs varchar(300)'
--设置sexti的数字为第一个符号:所在的位置
set @valueindex=@codeindex
--把原始字符串@bstring设置为从第一个符号开始往后的字符,把第一个:之前的字符都不要
set @bstring=substring(@bstring,@valueindex+1,len(@bstring)-@valueindex)
end
return
end





运行不成功,求解
------解决方案--------------------
换成存储过程来实现,要么你就别拼sql
  相关解决方案