如何在MySQL中使用节点拆分XML值?

时间:2015-10-06 05:43:12

标签: mysql xml nodes

我正在使用MySQL 5.5版。我想拆分XML值并将值插入到其他表中。

这是我的XML:

<Xml><Student><Id>1</Id><Marks>275</Marks><Rank>2</Rank></Student></Xml>

我希望我的结果成为:

Id    1
Marks 275
Rank  2

许多人建议使用ExtractValuefunction来获取分割值。

当我使用ExtractValuefunction时,我会编写如下的查询

EXTRACTVALUE(Xml,'/Xml/Student/Id') AS ListOfValues
EXTRACTVALUE(Xml,'/Xml/Student/Marks') AS ListOfValues
EXTRACTVALUE(Xml,'/Xml/Student/Rank') AS ListOfValues

我也无法在结果中获取节点值。

如何获得正确的结果。帮我解决这个问题。谢谢你的建议。

1 个答案:

答案 0 :(得分:1)

Declare @xmldata text;
set @xmldata = <Xml><Student><Id>1</Id><Marks>275</Marks><Rank>2</Rank></Student></Xml>

SELECT 'Id' AS ColName,EXTRACTVALUE(@xmldata, '/Xml/Student/@Id') AS Val
UNION ALL
SELECT 'Marks', EXTRACTVALUE(@xmldata, '/Xml/Student/@Marks') 
UNION ALL
SELECT 'Rank',EXTRACTVALUE(@xmldata, '/Xml/Student/@Rank')

希望这可以帮助你...