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

Hit*_*dha 5 xml mysql

我想从给出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>
Run Code Online (Sandbox Code Playgroud)

我试过了 :

SET location = ExtractValue(xml, '//locations//id');    
SELECT ExtractValue(location, '//id'); 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.请帮忙

hak*_*kre 9

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');
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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