Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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
如何从XML列复制数据并将其插入包含与MS SQL SERVER中的XML标记名相同的列名的表中_Sql_Sql Server_Xml_Database - Fatal编程技术网

如何从XML列复制数据并将其插入包含与MS SQL SERVER中的XML标记名相同的列名的表中

如何从XML列复制数据并将其插入包含与MS SQL SERVER中的XML标记名相同的列名的表中,sql,sql-server,xml,database,Sql,Sql Server,Xml,Database,假设我有一个包含XML数据类型的单列的表 例如: 我尝试过OPENXML、XQUERY等。逐列读取并插入到该行似乎不起作用。你能在这方面指导我吗?我想你能做到 declare @str_xml xml --- xml data from your column table SELECT [Table].[Column].value('name[1]', 'varchar(100)') as ' Name ', [Table].[Column].value('ID[1]', '

假设我有一个包含XML数据类型的单列的表 例如:


我尝试过OPENXML、XQUERY等。逐列读取并插入到该行似乎不起作用。你能在这方面指导我吗?

我想你能做到

declare @str_xml xml --- xml data from your column table 

SELECT
    [Table].[Column].value('name[1]', 'varchar(100)') as ' Name ',
    [Table].[Column].value('ID[1]', 'varchar(20)') as ' ID '
FROM @str_xml.nodes('/ emp') as [Table]([Column])

Note :
name[1] = name on this must be same with tag <name> not <Name>
当您可以从xml字符串生成输出表时,您可以使用它插入到另一个表中


我想你能做到

declare @str_xml xml --- xml data from your column table 

SELECT
    [Table].[Column].value('name[1]', 'varchar(100)') as ' Name ',
    [Table].[Column].value('ID[1]', 'varchar(20)') as ' ID '
FROM @str_xml.nodes('/ emp') as [Table]([Column])

Note :
name[1] = name on this must be same with tag <name> not <Name>
当您可以从xml字符串生成输出表时,您可以使用它插入到另一个表中

对xml字段和原始表进行交叉应用时,应该会得到需要插入到目标表中的输出

DECLARE @Source TABLE (XmlData XML)
DECLARE @Emp TABLE (ID INT, Name VARCHAR(15))
INSERT @Source VALUES
    ('<emp><Name>Alice</Name><ID>1</ID></emp><emp><Name>Bob</Name><ID>2</ID></emp>'),
    ('<emp><Name>Max</Name><ID>3</ID></emp>')

INSERT @Emp (ID, Name)
    SELECT
        Employees.Emp.value('ID[1]', 'INT') AS ID,
        Employees.Emp.value('Name[1]', 'VARCHAR(25)') AS Name
    FROM @Source SRC
        CROSS APPLY SRC.XmlData.nodes('/emp') AS Employees(Emp)

SELECT * FROM @Emp
对xml字段和原始表进行交叉应用时,应该会得到需要插入到目标表中的输出

DECLARE @Source TABLE (XmlData XML)
DECLARE @Emp TABLE (ID INT, Name VARCHAR(15))
INSERT @Source VALUES
    ('<emp><Name>Alice</Name><ID>1</ID></emp><emp><Name>Bob</Name><ID>2</ID></emp>'),
    ('<emp><Name>Max</Name><ID>3</ID></emp>')

INSERT @Emp (ID, Name)
    SELECT
        Employees.Emp.value('ID[1]', 'INT') AS ID,
        Employees.Emp.value('Name[1]', 'VARCHAR(25)') AS Name
    FROM @Source SRC
        CROSS APPLY SRC.XmlData.nodes('/emp') AS Employees(Emp)

SELECT * FROM @Emp
ID          Name
----------- ---------------
1           Alice
2           Bob
3           Max