ich in einer XML-Spalte einige XML-Daten in einer SQL Server-Tabelle haben wie folgt:SQL Server XQuery mit Standard-Namespace
<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 bemerken, dass einige der Elemente eine xmlns Attribut und einige nicht ...
Ich muss Abfragen schreiben, um die Daten zurückzugeben - und noch wichtiger, zeigen Sie einem Business Analyst, wie Sie ihre eigenen Abfragen schreiben, um die Daten zu bekommen, die sie braucht, damit ich es so einfach wie möglich will.
kann ich die Daten abfragen, leicht das WITH XMLNAMESPACES Element wie folgt verwendet:
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]
Aber Hinzufügen der x: Teil auf die Abfrage es zu kompliziert aussehen läßt, und ich will es für das Geschäft einfach halten Analytiker.
Ich habe versucht, und fügte hinzu:
WITH XMLNAMESPACES (DEFAULT 'urn:callcredit.co.uk/soap:affordabilityapi2')
und Entfernen des x: von der XQuery - aber das gibt null zurück
Gibt es eine (möglicherweise wegen des Fehlens der xmlns auf dem Root-Element?) So kann ich diese Abfragen entweder mit oder ohne den Standard-Namespace vereinfachen?
Richtig, das Problem ist, dass '' nicht in einem Namespace ist. Wenn Sie also Elemente im Namespace 'urn: callcredit.co.uk' abfragen, können Sie es nicht auswählen. Leider gibt es keine Möglichkeit, No-Namespace ein Präfix zuzuweisen, also denke ich, dass Sie Präfixe für die Namespaced-Elemente verwenden müssen. –
wst