【问题标题】:T-sql data migration from xml to columnsT-sql 数据从 xml 迁移到列
【发布时间】:2012-06-15 11:40:40
【问题描述】:

我有 2 列的临时表 #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可以关联很多对):

  1. 身份证
  2. 价值

我该怎么做?

【问题讨论】:

    标签: sql-server xml tsql xpath xquery-sql


    【解决方案1】:
    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)
    

    SE-Data

    【讨论】: