Я создал таблицу со столбцом XML строгого типа в базе данных SQL2008. У меня проблемы с пониманием документации или примеров, которые показывают, как я могу сделать простой запрос, чтобы выбрать строки, которые имеют значение true для определенного элемента.
Самое близкое, что я могу получить без ошибок, это:
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
Но этот запрос возвращает все строки, а не только те, которые false для интересующего меня элемента.
Простой пример:
Определенная коллекция 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 хранится в строке
<?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>
Если бы кто-то мог показать мне, как создать XQuery, который бы возвращал только те строки с false для CompetitionExclusion , что было бы здорово. Все образцы, которые я обнаружил, имеют тенденцию иметь дело с атрибутами, а не с элементами.
Спасибо