MySQL版本10.1.13-MariaDB
我需要迭代地检索特定元素中m属性的值
SELECT ExtractValue(
'<a>
<b>
<c m="e1">
<k>asde1</k>
</c>
<c m="e2">
<k>asdae2</k>
</c>
<c m="e3">
<k>asdae3</k>
</c>
</b>
<b>
<c m="l1">
<k>asdl1</k>
</c>
<c m="l2">
<k>asdal2</k>
</c>
<c m="l3">
<k>asdal3</k>
</c>
</b>
</a>',
'//@m[1]' ) AS result;
我的结果是
e1 e2 e3 l1 l2 l3
我需要的是
e1
答案 0 :(得分:2)
您的查询
SELECT ExtractValue(
'SomeXML',
'//@m[1]' ) AS result;
由于//
开头的XPath
,会执行深度搜索。这意味着:使用名称&#34; m&#34;查找任何属性并返回它的价值!
使用XML,尽可能具体是一个好主意:
SELECT ExtractValue(
'SomeXML',
'/a[1]/b[1]/c[1]/@m' ) AS result;
这意味着:从根开始并搜索第一个&#34; a&#34;,搜索第一个&#34; b&#34;第一个&#34; c&#34;这个元素有一个属性&#34; m&#34;。
你可以在这里测试一下: http://www.sqlfiddle.com/#!9/9eecb7d/77760