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列.此外,重要的是要注意,值的顺序和组合可能没有特定的顺序.
使用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)