4

SQLServerのxqueryは初めてです。

[1]と属性を使用したxquery式に出くわすことがよくあります。

誰かがそれが何を意味するのか説明できますか?

これが例です

declare @aa xml
set @aa='<data>
  <row>
    <Value>1</Value>
    <Text>Masters</Text>
  </row>
  <row>
    <Value>2</Value>
    <Text>Transactions</Text>
  </row>
  <row>
    <Value>3</Value>
    <Text>Misch. Reports</Text>
  </row>
</data>'


select a.f.value('Value[1]','varchar(50)'),   --  why [1] here ?
   a.f.value('Text[1]','varchar(50)')         --  and here too..
 from @aa.nodes('/data/row') as a(f)

ありがとうnよろしく

4

2 に答える 2

9

XPathでは、[expression]構文はロケーションパス上の述語を示します。[1]はの省略構文[position()=1]あり、「最初の要素」を意味します。SQL Serverでは、XPath [1](または最大で1つの要素に決定論的にフィルタリングするその他の述語)を使用する必要があります。これは、XPath式を、任意の数の要素を返すものから、0または1個の要素を決定論的に返すものに変換するためです。必要なものであるスカラー式.value()

XQueryは最大で1つの値を返す必要があります。

于 2012-04-09T21:00:24.950 に答える
3

この場合Value、現在/data/rowの最初のText要素と同じ要素の最初の要素が必要だと言っています。あなたが[2]そこに置くならば、それは2番目のものを意味するでしょう。行が1つしかないことがわかっている場合でも、[1]を付けることで、1つの要素だけが関数に入るのを安全に感じることができvalueます。

于 2012-04-09T20:51:03.130 に答える