SQL Server XQuery с пространством имен по умолчанию

У меня есть некоторые данные XML в таблице SQL Server в столбце XML следующим образом:

<AffordabilityResults>
      <matchlevel xmlns="urn:callcredit.co.uk/soap:affordabilityapi2">IndividualMatch</matchlevel>
      <searchdate xmlns="urn:callcredit.co.uk/soap:affordabilityapi2">2013-07-29T11:20:53</searchdate>
      <searchid xmlns="urn:callcredit.co.uk/soap:affordabilityapi2">{E40603B5-B59C-4A6A-92AB-98DE83DB46E7}</searchid>
      <calculatedgrossannual xmlns="urn:callcredit.co.uk/soap:affordabilityapi2">13503</calculatedgrossannual>
  <debtstress xmlns="urn:callcredit.co.uk/soap:affordabilityapi2">
    <incomedebtratio>
      <totpaynetincome>0.02</totpaynetincome>
      <totamtunsecured>0.53</totamtunsecured>
      <totamtincsec>0.53</totamtincsec>
    </incomedebtratio>
  </debtstress>
</AffordabilityResults>

Вы заметите, что некоторые элементы имеют атрибут xmlns, а некоторые нет ...

Мне нужно писать запросы для возврата данных - и, что более важно, показать бизнес-аналитику, как составлять собственные запросы для получения необходимых ей данных, поэтому я хочу, чтобы они были максимально простыми.

Я могу легко запросить данные, используя элемент WITH XMLNAMESPACES следующим образом:

WITH XMLNAMESPACES (N'urn:callcredit.co.uk/soap:affordabilityapi2' as x )
SELECT

    ResponseXDoc.value('(/AffordabilityResults/x:matchlevel)[1]','varchar(max)' ) AS MatchLevel
  , ResponseXDoc.value('(/AffordabilityResults/x:debtstress/x:incomedebtratio/x:totamtunsecured)[1]','nvarchar(max)' ) AS UnsecuredDebt

  FROM [NewBusiness].[dbo].[t_TacResults]

Но добавление x: part в запрос делает его слишком сложным, и я хочу, чтобы бизнес-аналитик упростил его.

Я попытался добавить:

WITH XMLNAMESPACES (DEFAULT 'urn:callcredit.co.uk/soap:affordabilityapi2' )

и удаление x: из XQuery - но это возвращает ноль (возможно, из-за отсутствия xmlns в корневом элементе?)

Можно ли как-нибудь упростить эти запросы с использованием пространства имен по умолчанию или без него?

Ответы на вопрос(1)

Ваш ответ на вопрос