使用mysql ExtractValue()从xml中选择数据

时间:2014-06-17 06:04:05

标签: mysql xml

我想从给定xml中提取位置ID,并且还想放置在条件存在的情况下提取它的条件。

<?xml version="1.0" encoding="UTF-8"?>
<id>1006221342207</id>
<name>Hitesh Modha</name>
<email>hitesh.99@hotmail.com</email>
<location>
    <id>115440481803904</id>
    <name>Ahmedabad, India</name>
</location>

我试过了:

SET location = ExtractValue(xml, '//locations//id');    
SELECT ExtractValue(location, '//id'); 

但它不起作用。 请帮忙

1 个答案:

答案 0 :(得分:7)

SQL

SELECT
  ExtractValue('<?xml version="1.0" encoding="UTF-8"?>
<id>1006221342207</id>
<name>Hitesh Modha</name>
<email>hitesh.99@hotmail.com</email>
<location>
    <id>115440481803904</id>
    <name>Ahmedabad, India</name>
</location>', '//location//id');

仅返回空结果,因为您使用的XML片段的路径//locations//id为空。

您更有可能为xpath表达式寻找'/location/id',因为它会返回ID text()值:115440481803904

您接下来的错误是您认为ExtractValue会返回一个可以重新运行ExtractValue的XML片段。事实并非如此(只有 - 在您的示例中不是这种情况 - 在定位的text()节点中将XML编码为CDATA)。

这里详细解释了所有细节:

如果你无法解决这些误解,我没有进一步的建议。