SQL Server XQuery com Namespace padrão
Eu tenho alguns dados XML em uma tabela do SQL Server em uma coluna XML da seguinte maneira:
<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>
Você notará que alguns dos elementos têm um atributo xmlns e outros não ...
Eu preciso escrever consultas para retornar os dados - e, mais importante, mostrar a um analista de negócios como escrever suas próprias consultas para obter os dados de que ela precisa, então eu quero que seja o mais simples possível.
Eu posso consultar os dados facilmente usando o elemento WITH XMLNAMESPACES da seguinte maneira:
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]
Mas adicionar a parte x: à consulta faz com que ela pareça excessivamente complicada e quero mantê-la simples para o analista de negócios.
Eu tentei adicionar:
WITH XMLNAMESPACES (DEFAULT 'urn:callcredit.co.uk/soap:affordabilityapi2' )
e removendo o x: do XQuery - mas isso retorna null (possivelmente por causa da falta dos xmlns no elemento raiz?)
Existe alguma maneira de simplificar essas consultas com ou sem o namespace padrão?