代码之家  ›  专栏  ›  技术社区  ›  Clauric

如何将XML数据解析为SQL查询查看器

  •  0
  • Clauric  · 技术社区  · 5 年前

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

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

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

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

    XML查看器中的结果列“data”为:

    TestTestTest
    

    在SQL查看器中,XML中的值是如何正确地分开的?

    0 回复  |  直到 5 年前
        1
  •  2
  •   marc_s    5 年前

    尝试使用类似的方法来提取 <dreg> 作为单独的值:

    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)