bmw318mt Ответов: 1

Проверьте, существует ли элемент в XML с помощью tsql


У меня есть следующее : Где запрос возвращает 1, что является правильным, но если я добавлю пространство имен в
<Data xmlns="urn:semi-org:xsd.E142-1.V1005.SubstrateMap"> 
запрос возвращает 0

DECLARE @ExportData  XML

SELECT @ExportData =
'<Data >
  <BulkData>
    <EachData Parts="Test1" />
    <EachData Parts="Test2" />
    <EachData Parts="Test3" />
  </BulkData>
</Data>';

SELECT @ExportData.exist('(//BulkData)') 


Что я уже пробовал:

Я попытался изменить оператор select
SELECT @ExportData.exist('(*/BulkData)')

1 Ответов

Рейтинг:
8

Luca Astolfi

Привет вам нужно изменить пространство имен по умолчанию, когда вы делаете Xquery, вот здесь есть два решения

DECLARE @ExportData  XML

SELECT @ExportData =
'<Data xmlns="urn:semi-org:xsd.E142-1.V1005.SubstrateMap">
  <BulkData>
    <EachData Parts="Test1" />
    <EachData Parts="Test2" />
    <EachData Parts="Test3" />
  </BulkData>
</Data>';

 
SELECT @ExportData.exist('
declare namespace ns="urn:semi-org:xsd.E142-1.V1005.SubstrateMap";
 ns:*/ns:BulkData')

 ;WITH XMLNAMESPACES (DEFAULT N'urn:semi-org:xsd.E142-1.V1005.SubstrateMap')  
SELECT @ExportData.exist('*/BulkData')