字符串转换为表格

CREATE FUNCTION StrToTable
(    
    @str varchar(max),
    @strRow varchar(2)='@',
    @strCol varchar(2)=','
)
RETURNS @tableName TABLE (
A0 varchar(50),
A1 varchar(50),
A2 varchar(50),
A3 varchar(50),
A4 varchar(50),
A5 varchar(50),
A6 varchar(50),
A7 varchar(50),
A8 varchar(50),
A9 varchar(50)
)

AS
begin
    set @str=@str+@strRow;
    --定义列
    declare @A0 varchar(50)
    declare @A1 varchar(50)
    declare @A2 varchar(50)
    declare @A3 varchar(50)
    declare @A4 varchar(50)
    declare @A5 varchar(50)
    declare @A6 varchar(50)
    declare @A7 varchar(50)
    declare @A8 varchar(50)
    declare @A9 varchar(50)

    Declare @insertStr varchar(50) --–截取后的第一个字符串 
    Declare @newstr varchar(1000) --–截取第一个字符串后剩余的字符串 
    Declare @newstr0 varchar(1000) --–二次截取的时候用到 

    set @newstr=@str
    while(len(@newstr)>0) 
    begin 
        --解析行数据
        set @insertStr = left(@newstr,charindex(@strRow,@newstr)-1) 
        set @newstr = stuff(@newstr,1,charindex(@strRow,@newstr),'') 
        set @insertStr=@insertStr+@strCol+@strCol+@strCol+@strCol+@strCol+@strCol+@strCol+@strCol+@strCol
        --解析列书记
        set @A0=left(@insertStr,charindex(@strCol,@insertStr)-1) 
        set @newstr0 = stuff(@insertStr,1,charindex(@strCol,@insertStr),'') 

        set @A1 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 

        set @A2 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 
    
        set @A3 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 
    
        set @A4 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 
    
        set @A5 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 
    
        set @A6 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 
    
        set @A7 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 
     

        set @A8 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'')
    
        set @A9 =left(@newstr0,charindex(@strCol,@newstr0)-1) 
        set @newstr0 = stuff(@newstr0,1,charindex(@strCol,@newstr0),'') 


        --插入到临时表
        INSERT INTO @tableName VALUES(@A0,@A1,@A2,@A3,@A4,@A5,@A6,@A7,@A8,@A9)
    
    end

  Return
end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值