我试图从一个表中将列名作为数据插入到另一个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,它工作吗?
INSERT INTO Table_1 (Name)
Select 'Name1'
3)如果选择这些列,你在列表中看到的TABLE_NAME?
Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns
您的SQL代码的工作很适合我用的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
我在尝试插入前运行select部分,并返回0行。插入作品。 TABLE_NAME不在列表中,似乎问题在于我搜索的表位于服务器上的其他数据库中。谢谢。 –
@WilliamCox我总是很乐意帮忙。 ;) –
您的查询应该尽可能地发挥作用可以说,这么说,我总是使用这些查询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'
你看到的值你所期望的,当你只是运行:'SELECT COLUMN_NAME,TABLE_NAME FROM INFORMATION_SCHEMA .COLUMNS'? –
@GoatCO我期待的价值观以及许多我不想插入的东西。 –
当你从这些结果中添加'WHERE'标准和表名时,你什么都得不到? –