CREATE TABLE T ( [id] int, [name] varchar(10), xl int )INSERT INTO T SELECT 1,'张三',21 UNION ALL SELECT 2,'李四',34 UNION ALL SELECT 3,'王五',34SELECT * FROM Tdeclare @s1 varchar(8000),@s2 varchar(8000) ,@s3 varchar(8000),@s5 varchar(8000) ,@i varchar(10) select @s1='',@s2='',@s3='',@s5='',@i='0' select @s1=@s1+',@'+@i+' varchar(8000)' ,@s2=@s2+',@'+@i+'=''id='''''+name+'''''''' ,@s3=@s3+' select @'+@i+'=@'+@i+'+'',[''+cast(id as varchar)+'']=''''''+cast(['+name+'] as varchar)+'''''''' from T' ,@s5=@s5+'+'' union all select ''+@'+@i ,@i=cast(@i as int)+1 from syscolumns where object_id('T')=id order by colid select @s1=substring(@s1,2,8000) ,@s2=substring(@s2,2,8000) ,@s5=substring(@s5,15,8000) exec('declare '+@s1+' select '+@s2+@s3+' exec('''+@s5+')')
则你变换后的表第一行为Int,第二行为varchar,以此类推。
而SQL表结构一列的类型应该是统一的,因此无法达到2.退一步讲,即使你全部设为字符型字段
一张表最多可以拥有1024个字段,即你原表只能有1024行数据
1024行数据,能干什么??
一列的类型应该一样啊
生成的2个数组为String name[],int age[].
然后把他们放入对应的表格就行,用循环语句很容易的。
如在网页上显示可写为(JSP):
<table name="test" width="100%">
<tr>
<td>姓名:</td>
<%
for(int i=0;i<name.length;i++)
{
out.print("<td>"+name[i]+"</td>");
}
%>
</tr>
for(int i=0;i<age.length;i++)
{
out.print("<td>"+age[i]+"</td>");
}
<tr>
<td>年龄:</td>
</tr>
</table>未经过测试,可能有手误。
应该是:
如在网页上显示可写为(JSP):
<table name="test" width="100%">
<tr>
<td>姓名:</td>
<%
for(int i=0;i<name.length;i++)
{
out.print("<td>"+name[i]+"</td>");
}
%>
</tr>
<tr>
<td>年龄:</td>
<% for(int i=0;i<age.length;i++)
{
out.print("<td>"+age[i]+"</td>");
}
%>
</tr>
</table>未经过测试,可能有手误。
http://www.faq-it.org/archives/mssql/5427269fa2f6c2f7ea6a0fcee7a4eb32.php
(
[id] int,
[name] varchar(10),
xl int
)INSERT INTO T
SELECT 1,'张三',21 UNION ALL
SELECT 2,'李四',34 UNION ALL
SELECT 3,'王五',34SELECT * FROM Tdeclare @s1 varchar(8000),@s2 varchar(8000)
,@s3 varchar(8000),@s5 varchar(8000)
,@i varchar(10)
select @s1='',@s2='',@s3='',@s5='',@i='0'
select @s1=@s1+',@'+@i+' varchar(8000)'
,@s2=@s2+',@'+@i+'=''id='''''+name+''''''''
,@s3=@s3+'
select @'+@i+'=@'+@i+'+'',[''+cast(id as varchar)+'']=''''''+cast(['+name+'] as varchar)+'''''''' from T'
,@s5=@s5+'+'' union all select ''+@'+@i
,@i=cast(@i as int)+1
from syscolumns
where object_id('T')=id
order by colid
select @s1=substring(@s1,2,8000)
,@s2=substring(@s2,2,8000)
,@s5=substring(@s5,15,8000)
exec('declare '+@s1+'
select '+@s2+@s3+'
exec('''+@s5+')')