繁体   English   中英

MSSQL从varchar列读取和拆分XML

[英]MSSQL reading and splitting XML from varchar column

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

因此,有一列包含这样的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语句的方式进行制作。 有任何想法吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM