2
我已经创建了一个在SQL2008数据库中具有强类型XML列的表。我无法理解文档或示例,这些文档或示例显示了如何通过简单查询来选择特定元素的值为true的行。在SQL Server 2008中查询XML类型列
我可以得到,而不必引发的错误最接近的是:
SELECT Person.*
FROM [Profile].[Person]
WHERE Flags.exist('
declare namespace ws="http://schema/profile/person/2010/09/flags";
ws:root/ws:CompetitionExclusion = xs:boolean("false")') = 1
但这个查询返回的所有行不只是那些假对我感兴趣的元素
简单。例如:
定义的XML架构集合
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:ws="http://schema/profile/person/2010/09/flags"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://schema/profile/person/2010/09/flags"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="CompetitionExclusion" type="xs:boolean" />
<xs:element name="EnrolmentExclusion" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
连续存放的
<?xml version="1.0" encoding="utf-16"?>
<ws:root xmlns:ws="http://schema/profile/person/2010/09/flags">
<ws:CompetitionExclusion>true</ws:CompetitionExclusion>
<ws:EnrolmentExclusion>false</ws:EnrolmentExclusion>
</ws:root>
如果有人能告诉我如何构建将与假只返回行的,将是巨大CompetitionExclusion元素的XQuery
示例XML。我发现的所有样本都倾向于处理属性而不是元素。
感谢