Mam niektóre dane XML w tabeli SQL Server w kolumnie XML w następujący sposób:SQL Server XQuery z obszaru nazw Domyślnie
<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>
Będziesz pamiętać, że niektóre elementy mają atrybut xmlns an a niektóre nie ...
Muszę pisać zapytania, aby zwrócić dane - i co ważniejsze pokazać analitykowi biznesowemu, jak pisać własne zapytania, aby uzyskać potrzebne dane, więc chcę, aby było tak proste, jak to tylko możliwe.
mogę kwerendy danych łatwo za pomocą elementu z XMLNAMESPACES następująco:
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]
Ale dodanie X: część do zapytania sprawia, że wygląda zbyt skomplikowane, a ja chcę zachować to proste dla biznesu analityk.
Próbowałem dodając:
WITH XMLNAMESPACES (DEFAULT 'urn:callcredit.co.uk/soap:affordabilityapi2')
i usuwania X: z XQuery - ale ta zwraca null
Czy istnieje (prawdopodobnie z powodu braku xmlns w elemencie głównym?) sposób mogę uprościć te zapytania z domyślnym obszarem nazw lub bez niego?
W porządku, problem polega na tym, że '' nie znajduje się w przestrzeni nazw, więc kiedy domyślnie wyszukujesz elementy w przestrzeni nazw 'urn: callcredit.co.uk ... ', nie możesz jej wybrać. Niestety nie ma możliwości przypisania prefiksu do przestrzeni beznapisowej, więc myślę, że musisz użyć prefiksów na elementach o przestrzeni nazw. –
wst