日期:2014-05-19  浏览次数:20445 次

列的动态添加
table1
ID   项目             类型         长度
1     计量单位     字符           20
2     数量             数字           4

table2
ID     书名

现要将table2添加列为  
ID       书名     计量单位(varchar(20))     数量(int(4))
这个用SQL语言怎样实现


------解决方案--------------------
create table #t (id int)

create table #test (ID int, 项目 varchar(20),类型 varchar(20), 长度 int)

insert into #test
select 1 , '计量单位 ', '字符 ', 20 union all
select 2 , '数量 ', '数字 ' , null

declare @sql varchar(2000)
set @sql= 'alter table #t add '
select @sql=@sql+项目+ ' '+ replace(replace(类型, '字符 ', 'varchar '), '数字 ', 'int ') +
case when 长度 is null then ', ' else '( '+ cast(isnull(长度, ' ') as varchar)+ ') , ' end from #test
set @sql=left(@sql,len(@sql)-1)
print @sql
exec(@sql)

select * from #t

drop table #test
drop table #t


id 计量单位 数量
----------- -------------------- -----------

(所影响的行数为 0 行)