Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 从xml到列的T-sql数据迁移_Sql Server_Xml_Tsql_Xpath_Xquery Sql - Fatal编程技术网

Sql server 从xml到列的T-sql数据迁移

Sql server 从xml到列的T-sql数据迁移,sql-server,xml,tsql,xpath,xquery-sql,Sql Server,Xml,Tsql,Xpath,Xquery Sql,我有一个临时表#xml,它有两列: CREATE TABLE #xml ( id int, xmlroutes xml ) INSERT INTO #xml (id, xmlroutes) (SELECT TOP 50 Id, CAST(RouteParameters as xml) as xmlroutes FROM LoggingRecords WHERE RouteParameters IS NOT NULL) 我已选择id并将xml与下一个脚本配对: (SELECT i

我有一个临时表#xml,它有两列:

CREATE TABLE #xml
(
    id int,
    xmlroutes xml
)
INSERT INTO #xml (id, xmlroutes)
(SELECT TOP 50 Id, CAST(RouteParameters as xml) as xmlroutes FROM LoggingRecords WHERE RouteParameters IS NOT NULL)
我已选择id并将xml与下一个脚本配对:

(SELECT id, T2.Loc.query('.') as pair
FROM   #xml
CROSS APPLY xmlroutes.nodes('/route/pair') as T2(Loc))
LoggingRecords包含可转换为xml的字符串(nvarchar)

我有所有记录的下一个xml结构:

<route>
   <pair key="x" value="y"/>
   <pair key="z" value="1"/>
   <pair key="a" value="b"/>
</route>

我想从#xml表的每个记录中选择下一个数据(每个id可以与许多对关联):

  • 身份证
  • 钥匙
  • 价值观
  • 我该怎么做

    select X.id,
           T.N.value('@key', 'nvarchar(50)') as [Key],
           T.N.value('@value', 'nvarchar(50)') as [Value]
    from #xml as X
      cross apply X.xmlroutes.nodes('/route/pair') as T(N)