2016-09-06 50 views
2

MySQL版本10.1.13-MariaDB的在MySQL從XML檢索所提取的數據複製

我需要檢索在一個特定的元素爲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 

回答

2

您的查詢

SELECT ExtractValue( 
'SomeXML', 
'//@m[1]') AS result; 

進行了深刻的搜索,由於//XPath的開始。這意味着:查找任何屬性的名稱爲「m」並返回其值!

隨着XML它始終是一個好主意,是一個具體越好:

SELECT ExtractValue( 
'SomeXML', 
'/a[1]/b[1]/c[1]/@m') AS result; 

這意味着:開始從根和搜索第一個「一」,有搜索第一「 b「,那裏是第一個」c「。這個元素有一個屬性「m」。

你可以在這裏進行測試: http://www.sqlfiddle.com/#!9/9eecb7d/77760

+0

該解決方案不工作,沒有結果 – tymspy

+0

@tymspy,好吧,我熟悉SQL-Server語法...請參閱我的更新 – Shnugo