选择XML值

时间:2018-09-27 07:04:36

标签: sql sql-server xml tsql

我具有以下XML格式:

<ROOT>
   <ROW a="new" b="0.9209000" />
   <ROW a="old" b="0.0" />
</ROOT>

预期输出:

SELECT new, new value, old ,old value

2 个答案:

答案 0 :(得分:4)

您的问题尚不清楚。以下是提供的xml中的所有重要值:

DECLARE @xml xml = '<ROOT>
   <ROW a="new" b="0.9209000" />
   <ROW a="old" b="0.0" />
</ROOT>'

SELECT
    @xml.value('(ROOT/ROW[1]/@a)[1]','nvarchar(10)') New,
    @xml.value('(ROOT/ROW[1]/@b)[1]','decimal(9,7)') [New value],
    @xml.value('(ROOT/ROW[2]/@a)[1]','nvarchar(10)') Old,
    @xml.value('(ROOT/ROW[2]/@b)[1]','decimal(9,7)') [Old value]

结果

New    New value    Old    Old value
------ ------------ ------ ---------
new    0.9209000    old    0.0000000

答案 1 :(得分:2)

您可以使用nodes将xml分解为单行,然后可以构建预期的输出(不是很清楚):

declare @x xml
='<ROOT>
   <ROW a="new" b="0.9209000" />
   <ROW a="old" b="0.0" />
</ROOT>'

select 
     Tbl.Col.value('./@a', 'varchar(max)') as a
    ,Tbl.Col.value('./@b', 'varchar(max)') as b
from @x.nodes('/ROOT/ROW') Tbl(Col)

结果:

enter image description here