我正在尝试将一个表中的列名作为数据插入到 SQL Server 中的另一个表中。这是我正在使用的查询:
insert into TableB (Name)
select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'
这将返回零行。我尝试过不指定 TABLE_NAME,也尝试过指定 TABLE_SCHEMA。这些都给出了结果,但不是我想要的。
我正在尝试将一个表中的列名作为数据插入到 SQL Server 中的另一个表中。这是我正在使用的查询:
insert into TableB (Name)
select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'
这将返回零行。我尝试过不指定 TABLE_NAME,也尝试过指定 TABLE_SCHEMA。这些都给出了结果,但不是我想要的。
我看不出您提供的 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
据我所知,您的查询应该可以正常工作,也就是说,我总是将 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'