Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 按syscolumn将数据从一个表复制到具有相同列名的另一个表_Sql Server_Tsql - Fatal编程技术网

Sql server 按syscolumn将数据从一个表复制到具有相同列名的另一个表

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部分 顺便说一句,请不要使用存储过程您可以使用以下脚本(请确保您知道自己在做什么,这可能不太好

我有两个表A和B。它们的列名相同,但类型不同。 现在我想将数据从A复制到B。但是我不想指定列名。我想像这样使用syscolumns

从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)