我已经编写了一个与CubeIQ BlackBox(www.magiclogic.com)进行交互的界面,我有一个SQL Server 2005数据库表,我在其中存储了一些常规文本字段,日期和两个XML。 XML数据类型。
我想从XML中选择一些值,我无法弄清楚如何查询XML或该XML中节点的属性。
以下是我想要执行的查询类型:
SELECT
[regular_table_field1],
[regular_table_field2],
[opt_resposne_xml].rootnode.wrapper.child@attr('someattribute') AS 'someattribute',
[opt_resposne_xml].rootnode.wrapper.child@attr('someattribute2') AS 'someattribute2'
FROM [optimizations] WHERE [opt_concept_id] = '1234'
答案 0 :(得分:2)
不知道您的XML是什么样的,这里是一段通用的代码,可以让您了解它的外观:
SELECT
[regular_table_field1],
[regular_table_field2],
[opt_resposne_xml].value('(/rootnode/wrapper/child/@someattribute)[1]', 'int') AS 'someattribute',
[opt_resposne_xml].value('(/rootnode/wrapper/child/@someattribute2)[1]', 'varchar(50)') AS 'someattribute2'
FROM
[optimizations]
WHERE
[opt_concept_id] = '1234'
如果您需要“进入”XML列并获取单个值(来自XML元素或属性),您基本上需要将XPath定义到您感兴趣的信息所在的位置,您需要将其转换为给定的SQL Server数据类型。
如果您需要将单个关系行与单个XML字段中的多个元素交叉连接,则可能需要其他方法(CROSS APPLY
)。
另外:您可能需要注意所涉及的XML命名空间 - 这是尝试解析SQL Server中的XML时常见的陷阱。