如何从数据库中获取所有表和列? (SQL Server)

时间:2018-09-10 11:32:10

标签: sql-server

我想将所有表及其列放在一个表中。

例如:

Table 1 | Column1 | Column2 | Column3 | 

Table 2 | Column1 |

Table 3 | Column1 | Column2 | Column3 | Column4 | Column5

Table 4 | Column1 | Column2 |

Table 5 | Column1 | Column2 | Column3 | Column4 | Column5

Table 6 | Column1 | Column2 | Column3 | Column4 | Column5 | Column6 | Column7

编辑:

我正在使用的版本:Microsoft SQL Server 2008 R2(SP1)-10.50.2550.0(X64)

2 个答案:

答案 0 :(得分:0)

编辑

  

正如jarlh指出的那样-您需要确保每个数据类型的数据类型   列的类型相同,否则您将无法合并它们。

     

因此,如果col1通常是整数,则不能将col1与字符串   价值观。除非将其转换为字符串。

如果它应该只是静态的,请执行以下操作:

Select Col1,Col2,Col3 from Table1
union all
Select col1,null as Col2, null as Col3 from table2

以此类推。

因此,如果您最大的表有7列 应该是

Select col1, col2,col3,null as col4,null as col5,null as col6,null as col7 from table1
union all
select col1, null as col2, null as col3.................. ,null as col7 from table2

答案 1 :(得分:0)

使用以下查询。

SELECT t.name as TableName, 
stuff(
        (select '|'+ CAST(c.name as varchar(max)) from sys.columns c
    where c.object_id = t.object_id for xml path('')),1,1,'') as columnlist
from sys.tables t