我正在尝试将一个表中的列名作为数据插入到SQL Server中的另一个表中。这是我正在使用的查询:
insert into TableB (Name)
select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'
返回零行。我试过没有指定TABLE_NAME,也尝试指定TABLE_SCHEMA。这些都会给出结果,但不是我想要的。
答案 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'