【问题标题】:How to parse XML data into SQL query viewer如何将 XML 数据解析到 SQL 查询查看器中
【发布时间】:2020-07-29 16:39:56
【问题描述】:

我在 SQL Server 数据库中有一个 XML 列,我需要能够从中提取数据,并在 SQL 查询中分散到多个列中。该表本身包含数百万行数据。

XML 数据存储为:

<dreg>
    <dtype>Test</dtype>
    <dOS>Test</dOS>
    <dmake>Test</dmake>
</dreg>

当我尝试运行下面的 SQL 查询时,XML 数据在视图中作为一列返回:

select 
    Id,
    dID,
    Meta /*<- XML data*/
from 
    data_table

但是,如果我运行以下 SQL 查询:

select 
    ID,
    dID,
    cast(Meta as XML).value('(/dreg)[1]', 'nvarchar(100)') as data
from 
    data_table

查看器中 XML 的结果列“数据”是:

TestTestTest

如何正确解析 XML,使 XML 中的 3 个值在 SQL 查看器的不同列中?

【问题讨论】:

    标签: sql-server xml


    【解决方案1】:

    尝试这样的方法来提取 &lt;dreg&gt; 下的单独 XML 元素作为单独的值:

    select 
        ID,
        dID, 
        DType = Meta.value('(/dreg/dtype)[1]', 'nvarchar(100)'),
        DOS = Meta.value('(/dreg/dOS)[1]', 'nvarchar(100)'),
        DMake = Meta.value('(/dreg/dmake)[1]', 'nvarchar(100)') 
    from 
        data_table
    

    如果Meta 确实是XML 类型的列,则绝对不需要CAST(Meta AS XML) ....

    【讨论】:

    • 我需要拨打data_table,还是拨打@input
    • @Clauric:不,应该是 Data_table - @input 仅供我自己使用 - 修复了答案
    猜你喜欢
    • 2023-03-19
    • 2014-05-24
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2021-11-04
    • 1970-01-01
    相关资源
    最近更新 更多