我想从给定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');
但它不起作用。 请帮忙
答案 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)。
这里详细解释了所有细节:
如果你无法解决这些误解,我没有进一步的建议。