4

我正在尝试将一个表中的列名作为数据插入到 SQL Server 中的另一个表中。这是我正在使用的查询:

insert into TableB (Name)
select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'

这将返回零行。我尝试过不指定 TABLE_NAME,也尝试过指定 TABLE_SCHEMA。这些都给出了结果,但不是我想要的。

4

2 回答 2

2

我看不出您提供的 SQL 代码有任何问题。

更多故障排除:

1)如果您查询:

select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'

你有任何结果吗?

2)如果你尝试这个插入,它工作吗?

INSERT INTO Table_1 (Name)
Select 'Name1'

3)如果您选择这些列,您是否在列表中看到 TABLE_NAME?

Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns

您的 sql 代码与 Microsoft 的 AdventureWorks-DB 配合得很好(Table_1是一个带有列名的空表):

INSERT INTO dbo.Table_1 (Name)
Select COLUMN_NAME FROM INFORMATION_SCHEMA.columns
where TABLE_NAME = 'ProductInventory'

select * from table_1

输出:

ProductID
LocationID
Shelf
Bin
Quantity
rowguid
ModifiedDate
于 2013-07-30T17:04:30.657 回答
0

据我所知,您的查询应该可以正常工作,也就是说,我总是将 sys.columns 和 sys.tables 用于这些查询,请尝试:

SELECT c.name ColumnName
FROM sys.columns c 
JOIN sys.tables t 
    ON c.object_id = t.object_id 
WHERE t.name = 'TableA'
于 2013-07-30T17:19:10.133 回答