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