Sql server 按syscolumn将数据从一个表复制到具有相同列名的另一个表
我有两个表A和B。它们的列名相同,但类型不同。 现在我想将数据从A复制到B。但是我不想指定列名。我想像这样使用syscolumns:Sql server 按syscolumn将数据从一个表复制到具有相同列名的另一个表,sql-server,tsql,Sql Server,Tsql,我有两个表A和B。它们的列名相同,但类型不同。 现在我想将数据从A复制到B。但是我不想指定列名。我想像这样使用syscolumns: 从syscolumns中选择名称,其中id=object\u id(N'A') 我的sql查询结构如下: 插入到B中(dynamicColumnNames…) 选择动态列名称。。。从一个 我想知道如何用syscolumns name替换dynamicColumnNames部分 顺便说一句,请不要使用存储过程您可以使用以下脚本(请确保您知道自己在做什么,这可能不太好
从syscolumns中选择名称,其中id=object\u id(N'A')
我的sql查询结构如下:
插入到B中(dynamicColumnNames…)
选择动态列名称。。。从一个
我想知道如何用syscolumns name替换dynamicColumnNames部分
顺便说一句,请不要使用存储过程您可以使用以下脚本(请确保您知道自己在做什么,这可能不太好:): 此脚本无法转换为正确的类型。。。但从信息模式也可以做到这一点
DECLARE @cmd VARCHAR(MAX)
WITH CTE AS (
SELECT STUFF((
SELECT ', ' + cast(a.COLUMN_NAME as varchar(2000))
FROM INFORMATION_SCHEMA.COLUMNS a
JOIN INFORMATION_SCHEMA.COLUMNS b ON a.COLUMN_NAME = b.COLUMN_NAME
WHERE a.TABLE_NAME = 'A' AND
b.TABLE_NAME = 'B'
FOR XML PATH('')),1,2,'') AS Cols
)
SELECT @cmd = 'INSERT INTO A ('+CTE.Cols+') SELECT '+CTE.Cols+' FROM B'
FROM CTE
EXEC (@cmd)