ページのトップに戻る
Interstage Data Effector ユーザーズガイド

A.1.12 数値

数値による検索では、要素の値から数値部分を抽出し、その値と指定された数値が一致する文書や大小関係にある文書を検索します。要素の値から数値部分を自動的に抽出するため、さまざまな書き方の数値の検索に利用できます。
また、左辺に数値関数を指定して数値と比較することもできます。


数値の定義を以下の図に示します。


図A.17 数値の定義

数字

数字には、半角文字の0~9までを指定します。


数値検索の以下について説明します。

数値比較

数値比較では指定した要素の値から数値を抜き出し、キーワードに指定した数値と比較します。
要素の値から最初に見つけた上記の形式の文字列を数値として扱います。
整数部に出現するカンマ(,)は無視します。小数点が指定されている場合、それ以降最初に出現した数字以外の文字の前までを小数部とみなします。


/doc/money = 1000

/doc/moneyが示す要素の値から数値を抜き出し、1000と一致するものを真とします。
以下の例では、パス式に指定した要素の値に、複数の数値を含みます。このような場合は、最初に見つけた数値を値とみなします。


文書A
<money>ABC123,456@789</money>

123456とみなします。


文書B
<money>123456 7890123</money>

123456とみなします。


文書C
<money>1,500千円</money>

1500とみなします。


検索データに有効な数値文字列が存在しない場合、その条件は偽となります。

以下の検索対象文字列の場合は、有効な数値文字列が存在しません。

<money></money>

注意

  • 数値比較ではパス式の最後に、パス演算子“//”は指定できません。

  • 数値比較ではパス式の最後に、パス要素“*”は指定できません。

  • 数値比較では項目式に、"$_"は指定できません。

  • キーワードで指定する数値文字と、パス式で指定した要素の値の桁数をそろえる必要はありません。


キーワード
/root/money > 1000

パス式で指定した要素ノードが以下の場合、条件に一致しているとみなします。

<money>1000.5</money>

  • 複数のXML文書間で要素の値の整数部および小数部ともに桁数をそろえる必要はありません。

文書A
<money>1000.1</money>

文書B
<money>2000.05</money>

文書C
<money>10.5</money>

日時データ比較

日時データ比較では、指定した数値関数の値から数値を抜き出し、キーワードに指定した数値と比較します。

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

文書D

商品名

入荷日

産地

発送日

発送数

オレンジ

2008-01-01

アメリカ

TUE DEC 25 2007

10,000

バナナ

2008-08-20

フィリピン

MON AUG 18 2008

50,000

グレープ

2008-11-05

フランス

WED OCT 29 2008

30,000

メロン

2008-01-15

イタリア

FRI JAN 11 2008

10,000

パイナップル

2008-07-20

シンガポール

SAT JUL 19 2008

100,000

入荷日から1月のデータを取り出します。

条件式
extract_date($入荷日,"MONTH") = 1
結果

商品名

入荷日

産地

発送日

発送数

オレンジ

2008-01-01

アメリカ

TUE DEC 25 2007

10,000

メロン

2008-01-15

イタリア

FRI JAN 11 2008

10,000