ページの先頭行へ戻る
Big Data Integration ServerV1.4.0 検索編アプリケーション開発ガイド
FUJITSU Software

3.5.2 数値でソートする

XML文書の任意の要素ノードまたはその要素ノードの属性ノードが持つ文字列を数値とみなしてソートすることができます。数値とみなしてソートするには、ソート式のキー指定に、単一行関数指定のval関数を指定します。val関数の引数には、テキスト式または属性式を指定します。

単一行関数指定の詳細については、“B.2.4 単一行関数指定”を参照してください。


例として以下の文書があるものとします。


文書A

<doc>
  <basic expense="7650円">
    :
  </basic>
  <detail>
    :
    <taxi>1890円</taxi>
    :
  </detail>
</doc>

文書B

<doc>
  <basic expense="12980円">
    :
  </basic>
  <detail>
    :
    <taxi>11150円</taxi>
    :
  </detail>
</doc>

文書C

<doc>
  <basic expense="出張費不要">
    :
  </basic>
  <detail>
    :
    <taxi>3750円</taxi>
    :
  </detail>
</doc>

文書D

<doc>
  <basic expense="480円">
    :
  </basic>
  <detail>
    :
    <taxi>7400円</taxi>
    :
  </detail>
</doc>

例1

タクシー代(taxi)の安い順(昇順)にソートします。

val(/doc/detail/taxi/text())

結果:文書A、C、D、Bの順に返却されます。


例2

出張費用(expense)の安い順(昇順)にソートします。

val(/doc/basic/@expense)

結果:文書C、D、A、Bの順に返却されます。


参考

テキスト式で指定したXML文書中のテキストノードの文字列に数字を含まない場合は、val関数はその値を0とみなします。この例では、文書Cの出張費用は0として扱われています。

また、テキスト式で指定したXML文書中のテキストノードがない場合は、そのXML文書は最後に返却されます。


数値の大きい順(降順)にソートしたい場合は、キー指定のあとに“DESC”を指定します。


例3

タクシー代(taxi)の高い順(降順)にソートします。

val(/doc/detail/taxi/text()) DESC

結果:文書 B、D、C、Aの順に返却されます。


例4

出張費用(expense)の高い順(降順)にソートします。

val(/doc/basic/@expense) DESC

結果:文書 B、A、D、Cの順に返却されます。