我有一个xml文档,其中包含一些我不知道其名称的自定义字段。我想生成一个select语句,它将以名称值样式列出内容。
我找到sofar的所有示例都要求我知道节点的名称。 即。
declare @idoc int
declare @doc nvarchar(max); set
@doc = '<user>
<additionalfields>
<Account__Manager>Fred Dibner</Account__Manager>
<First__Aider>St Johns Ambulance</First__Aider>
</additionalfields>
</user>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
SELECT * FROM OPENXML (@idoc, 'user/additionalfields/',1)
是否有可能实现这一目标?
答案 0 :(得分:0)
我在经过相当多的实验后找到了答案。(顺便说一句,双下划线替换是由于某些数据库字段名称的输出格式。)
SELECT replace(name,'__',' ') as name, value
FROM OPENXML (@idoc, '/user/additionalfields/*',1)
WITH (
Name nvarchar(4000) '@mp:localname',
value nvarchar(4000) './text()'
)