SQL Server XQuery mit Standardnamespace

Ich habe einige XML-Daten in einer SQL Server-Tabelle in einer XML-Spalte wie folgt:

<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>

Sie werden feststellen, dass einige der Elemente ein xmlns-Attribut haben und andere nicht ...

Ich muss Abfragen schreiben, um die Daten zurückzugeben - und vor allem einer Geschäftsanalytikerin zeigen, wie sie ihre eigenen Abfragen schreibt, um die benötigten Daten zu erhalten, damit sie so einfach wie möglich sind.

Ich kann die Daten einfach mit dem WITH XMLNAMESPACES-Element wie folgt abfragen:

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]

Das Hinzufügen des x: -Teils zu der Abfrage macht sie jedoch zu kompliziert, und ich möchte es für den Geschäftsanalysten einfach halten.

Ich habe versucht hinzuzufügen:

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

und Entfernen des x: aus der XQuery - dies gibt jedoch null zurück (möglicherweise aufgrund des Fehlens der xmlns im Root-Element?)

Gibt es eine Möglichkeit, diese Abfragen mit oder ohne den Standardnamespace zu vereinfachen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage