使用T-SQL和XQUERY解析XML - 搜索特定值

Dav*_* L. 6 t-sql sql-server xpath xquery sql-server-2008

我有一些应用程序的属性以XML格式传递给我.我需要按名称解析属性并将值分配给我的数据库中的相应列.

我目前正在SSIS脚本组件中解析它,但它需要很长时间才能完成.我希望有一个简单的解决方案,使用XQUERY,但我找不到我要找的东西.

这是我收到的xml的一个例子:

<properties>
    <property>
        <name>DISMISS_SETTING</name>
        <value>DEFAULT</value>
    </property>
    <property>
        <name>SHOW_SETTING</name>
        <value>DEFAULT</value>
    </property>
    <property>
        <name>DEFAULT_SETTING</name>
        <value>DEFAULT</value>
    </property>
</properties>
Run Code Online (Sandbox Code Playgroud)

所以,如果我查看第一个属性元素,我会将值DEFAULT分配给我的数据库中的DISMISS_SETTING列.此外,重要的是要注意,值的顺序和组合可能没有特定的顺序.

Mik*_*son 9

使用value()方法(xml数据类型)从XML中提取值.在XQuery表达式中检查谓词中所需的名称.

select 
  @XML.value('(/properties/property[name = "DISMISS_SETTING"]/value/text())[1]', 'nvarchar(100)') as DISMISS_SETTING,
  @XML.value('(/properties/property[name = "SHOW_SETTING"]/value/text())[1]', 'nvarchar(100)') as SHOW_SETTING,
  @XML.value('(/properties/property[name = "DEFAULT_SETTING"]/value/text())[1]', 'nvarchar(100)') as DEFAULT_SETTING
Run Code Online (Sandbox Code Playgroud)

SQL小提琴