动态建立一个临时表的SQL算法
declare @createtemptable varchar(8000)
declare @i int
declare @sql varchar(8000)
declare @Columns varchar(50) --字段名称
declare @Key varchar(200) --拆分以','隔开的字段
declare @ColumnsType varchar(50) --字段类型
declare @ColumnsTemp as varchar(4000) --临时表中的列串
set @sql= 'a=float,b=float,c=float,d=float,e=float,f=float'
set @Columns=''
set @ColumnsType=''
set @ColumnsTemp=''
set @createtemptable=''
set @Key='' --以","隔开的值
set @i=charindex(',',@sql)
while @i>0
begin
--如:a=float
set @Key=left(@sql,@i-1)
--得到字段名如:a
set @Columns=left(@Key,patindex('%[=]%',@Key)-1)
--得到数据类型如:float
set @ColumnsType=right(@Key,len(@Key)-patindex('%[=]%',@Key) )
set @ColumnsTemp=@ColumnsTemp+char(10)+@Columns+' '+@ColumnsType+','
--下一个字段
set @sql=right(@sql,len(@sql)-@i)
set @i=charindex(',',@sql)
set @Key=''
set @Columns=''
set @ColumnsType=''
end
if len(@sql)>0
begin
--最后一个字符
set @Key=@sql
--最后一个字段
set @Columns=left(@Key,patindex('%[=]%',@Key)-1)
--最后一个字段类型
set @ColumnsType=right(@Key,len(@Key)-patindex('%[=]%',@Key) )
set @ColumnsTemp=@ColumnsTemp+char(10)+@Columns+' '+@ColumnsType
end
set @createtemptable=@createtemptable+'CREATE table #Rec ('+@ColumnsTemp+')'
--print @createtemptable
exec(@createtemptable+'insert #Rec values (1,2,3,4,5,6)
select * from #Rec ')
declare @i int
declare @sql varchar(8000)
declare @Columns varchar(50) --字段名称
declare @Key varchar(200) --拆分以','隔开的字段
declare @ColumnsType varchar(50) --字段类型
declare @ColumnsTemp as varchar(4000) --临时表中的列串
set @sql= 'a=float,b=float,c=float,d=float,e=float,f=float'
set @Columns=''
set @ColumnsType=''
set @ColumnsTemp=''
set @createtemptable=''
set @Key='' --以","隔开的值
set @i=charindex(',',@sql)
while @i>0
begin
--如:a=float
set @Key=left(@sql,@i-1)
--得到字段名如:a
set @Columns=left(@Key,patindex('%[=]%',@Key)-1)
--得到数据类型如:float
set @ColumnsType=right(@Key,len(@Key)-patindex('%[=]%',@Key) )
set @ColumnsTemp=@ColumnsTemp+char(10)+@Columns+' '+@ColumnsType+','
--下一个字段
set @sql=right(@sql,len(@sql)-@i)
set @i=charindex(',',@sql)
set @Key=''
set @Columns=''
set @ColumnsType=''
end
if len(@sql)>0
begin
--最后一个字符
set @Key=@sql
--最后一个字段
set @Columns=left(@Key,patindex('%[=]%',@Key)-1)
--最后一个字段类型
set @ColumnsType=right(@Key,len(@Key)-patindex('%[=]%',@Key) )
set @ColumnsTemp=@ColumnsTemp+char(10)+@Columns+' '+@ColumnsType
end
set @createtemptable=@createtemptable+'CREATE table #Rec ('+@ColumnsTemp+')'
--print @createtemptable
exec(@createtemptable+'insert #Rec values (1,2,3,4,5,6)
select * from #Rec ')

浙公网安备 33010602011771号