将列名插入表中

时间:2013-07-30 16:55:39

标签: sql sql-server

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

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

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

2 个答案:

答案 0 :(得分:2)

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

更多问题排查:

1)如果您查询:

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

你有什么结果吗?

2)如果您尝试此INSERT,是否有效?

INSERT INTO Table_1 (Name)
Select 'Name1'

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

Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns

您的sql-code对我来说非常适合使用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

答案 1 :(得分: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'
相关问题