Sql 将列名插入表中

Sql 将列名插入表中,sql,sql-server,Sql,Sql Server,我正在尝试在SQLServer中将一个表中的列名作为数据插入到另一个表中。这是我正在使用的查询: insert into TableB (Name) select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME = 'TableA' 这将返回零行。我尝试过不指定表名称,也尝试过指定表模式。它们都给出了结果,但不是我想要的。我看不出您提供的SQL代码有任何问题 更多疑难解答: ProductID LocationID Sh

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

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

这将返回零行。我尝试过不指定表名称,也尝试过指定表模式。它们都给出了结果,但不是我想要的。

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

更多疑难解答:

ProductID
LocationID
Shelf
Bin
Quantity
rowguid
ModifiedDate
1)如果您查询:

select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'
你有什么结果吗?

INSERT INTO Table_1 (Name)
Select 'Name1'
Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns
2)如果您尝试此插入,是否有效?

INSERT INTO Table_1 (Name)
Select 'Name1'
Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns
3)如果选择这些列,您是否在列表中看到表名?

INSERT INTO Table_1 (Name)
Select 'Name1'
Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns

您的sql代码在Microsoft的AdventureWorks DB中运行良好(
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'

当您刚刚运行时,是否看到预期的值:
从信息模式中选择列名称、表名称。列
?@GoatCO我预期的值在那里,以及许多我不想插入的内容。当您使用这些结果中的表名添加
WHERE
条件时,您将一无所获?在尝试插入之前,我正在运行select部分,它返回0行。插入工作。表名称不在列表中,问题似乎是我搜索的表位于服务器上的另一个数据库中。谢谢你。@WilliamCox我总是很乐意帮忙