用于将所有表的列名获取为XML的SQL Server查询
在我的数据库中,我打算将-[TableName]作为第一列,并将该表中的所有列以“,”(逗号后跟空格分隔符)作为第二列,用于数据库中的所有表用于将所有表的列名获取为XML的SQL Server查询,sql,sql-server,xml,tsql,Sql,Sql Server,Xml,Tsql,在我的数据库中,我打算将-[TableName]作为第一列,并将该表中的所有列以“,”(逗号后跟空格分隔符)作为第二列,用于数据库中的所有表 Table A | ColumnA1, ColumnA2, ColumnA3 Table B | ColumnB1, ColumnB2, ColumnB3 ...................................... 并将其作为XML检索 <TableList> <TableName>TableA</
Table A | ColumnA1, ColumnA2, ColumnA3
Table B | ColumnB1, ColumnB2, ColumnB3
......................................
并将其作为XML检索
<TableList>
<TableName>TableA</TableName> <Columns> ColumnA1, ColumnA2, ColumnA3</Columns>
<TableName>TableB</TableName> <Columns> ColumnB1, ColumnB2, ColumnB3</Columns>
</TableList>
表A第1栏、第2栏、第3栏
表B第B1、B2、B3栏
SQL查询应该如何编写?您可以试试这个
select isc.TABLE_NAME,stuff((
SELECT ',' + cast(column_name as varchar(20))
FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME =isc.TABLE_NAME
group by TABLE_NAME,COLUMN_NAME
FOR XML PATH('')
),1,1,'') as column_name from INFORMATION_SCHEMA.COLUMNS isc
group by TABLE_NAME
你可以试试这个
select isc.TABLE_NAME,stuff((
SELECT ',' + cast(column_name as varchar(20))
FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME =isc.TABLE_NAME
group by TABLE_NAME,COLUMN_NAME
FOR XML PATH('')
),1,1,'') as column_name from INFORMATION_SCHEMA.COLUMNS isc
group by TABLE_NAME
这将为您提供所需的XML
select T.name as TableName,
(
select ', '+C.name
from sys.columns as C
where C.object_id = T.object_id
order by C.column_id
for xml path(''), type
).value('substring((./text())[1], 3)', 'varchar(max)') as Columns
from sys.tables as T
order by T.name
for xml path(''), root('TableList')
但我认为这将返回一个更易于处理的XML
select T.name as TableName,
(
select ', '+C.name
from sys.columns as C
where C.object_id = T.object_id
order by C.column_id
for xml path(''), type
).value('substring((./text())[1], 3)', 'varchar(max)') as Columns
from sys.tables as T
order by T.name
for xml path('Table'), root('TableList')
或者像这样
select T.name as TableName,
(
select C.name as ColumnName
from sys.columns as C
where C.object_id = T.object_id
order by C.column_id
for xml path(''), type
) as Columns
from sys.tables as T
order by T.name
for xml path('Table'), root('TableList')
这将为您提供所需的XML
select T.name as TableName,
(
select ', '+C.name
from sys.columns as C
where C.object_id = T.object_id
order by C.column_id
for xml path(''), type
).value('substring((./text())[1], 3)', 'varchar(max)') as Columns
from sys.tables as T
order by T.name
for xml path(''), root('TableList')
但我认为这将返回一个更易于处理的XML
select T.name as TableName,
(
select ', '+C.name
from sys.columns as C
where C.object_id = T.object_id
order by C.column_id
for xml path(''), type
).value('substring((./text())[1], 3)', 'varchar(max)') as Columns
from sys.tables as T
order by T.name
for xml path('Table'), root('TableList')
或者像这样
select T.name as TableName,
(
select C.name as ColumnName
from sys.columns as C
where C.object_id = T.object_id
order by C.column_id
for xml path(''), type
) as Columns
from sys.tables as T
order by T.name
for xml path('Table'), root('TableList')