我有一些XML數據在SQL Server表中的XML列如下:SQL服務器的XQuery與默認命名空間
<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:部分查詢使它看起來過於複雜,我想保持簡單的業務分析師。
我嘗試添加:
WITH XMLNAMESPACES (DEFAULT 'urn:callcredit.co.uk/soap:affordabilityapi2')
和取出X:從XQuery的 - 但這返回null
是否有任何(可能是因爲缺少根元素上的xmlns的?)我可以使用或不使用默認名稱空間來簡化這些查詢嗎?
權,問題是,''是不是在一個命名空間,所以當你查詢的'甕元素:callcredit.co.uk ...'默認命名空間,你將無法選擇它。不幸的是有沒有辦法來分配前綴沒有命名空間,所以我認爲你必須在命名空間的元素使用前綴。 –
wst