У нас есть столбец в таблице, который содержит xml и настроен как столбец xml без схемы
Данные могут содержать несколько экземпляров узла, который выглядит следующим образом:
<eq:Fund>
<v:FundCode>
<v:type>SEDOL</v:type>
<v:value>3049141</v:value>
</v:FundCode>
</eq:Fund>
<eq:Fund>
<v:FundCode>
<v:type>Product Provider Specific</v:type>
<v:value>CASH</v:value>
</v:FundCode>
</eq:Fund>
Этот запрос возвращает 448 строк:
WITH XMLNAMESPACES ('http://schema1' as eq, 'http://schema2' as v, DEFAULT 'http://schema3')
select * from xml_request
WHERE xml_request_body.value('contains( string( (//v:type)[1] ),"SEDOL")','bit') = 1
Этот запрос возвращает 784 строки (после удаления пробелов в столбце результатов)
WITH XMLNAMESPACES ('http://schema1' as eq, 'http://schema2' as v, DEFAULT 'http://schema3')
select xml_request.xml_request_ser, xml_request.agency_number, xml_request.policy_holder, xml_request.product,
xml_request_body.query('for $x in /eq:EQuote/eq:Request/eq:Fund where $x/v:FundCode/v:type = "SEDOL" return $x') as result
from xml_request
1) Почему они возвращают разное количество строк? Первый запрос не находит все строки, где элемент содержит SEDOL? Почему нет?
Полагаю, это может быть связано с тем, что элемент с SEDOL может быть не первым? 2) Как изменить первый запрос для просмотра всех элементов, а не только первого?