【问题标题】:MSSQL reading and splitting XML from varchar columnMSSQL 从 varchar 列读取和拆分 XML
【发布时间】:2014-03-26 13:42:40
【问题描述】:

我遇到了很多解决方案,但我仍然遇到这个问题。

所以,有一列包含这样的 XML:

<Attributes>   <Map>     <entry key="DATA1" value="47317"/>     <entry key="DATA2" value="47316"/>     <entry key="DATA3" value="45972\47316\47317"/>  </Map> </Attributes>

我需要将其分成三列:DATA1、DATA2、DATA3。问题是有时 DATA2 元素根本不存在,所以我不能像使用 XQUERY 一样

SELECT CAST(attributes as xml).value('(/Attributes/Map/entry/@key)[1]', 'varchar(260)') as p FROM sometable

因为如果我用它来获取第二个元素,那么我可以捕获 DATA3 而不是 DATA2。

最后一个目标是以可用于使用 CREATE VIEW 语句制作的方式制作。有什么想法吗?

【问题讨论】:

    标签: sql sql-server xml


    【解决方案1】:
    SELECT CAST(attributes as xml).value('(/Attributes/Map/entry[@key="DATA1"]/@value)[1]', 'varchar(260)') as DATA1
        , CAST(attributes as xml).value('(/Attributes/Map/entry[@key="DATA2"]/@value)[1]', 'varchar(260)') as DATA2
        , CAST(attributes as xml).value('(/Attributes/Map/entry[@key="DATA3"]/@value)[1]', 'varchar(260)') as DATA3
    FROM sometable
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多