キーワード検索の1つである、数値による検索では、要素の値から数値部分を抽出し、その値と指定された数値が一致する文書や大小関係にある文書を検索します。要素の値から数値部分を自動的に抽出するため、さまざまな書き方の数値の検索に利用できます。
また、左辺に数値関数を指定して数値と比較することもできます。
数値検索の定義を以下の図に示します。
図3.20 数値検索の定義
図3.21 数値リテラルの定義
数字には、半角文字の0~9までを使って指定します。桁数の制限はありません。
前方および後方の空白文字を除き、数値リテラルに空白文字は記述できません。
要素の値から最初に見つけた上記の形式の文字列を数値として扱います。
整数部に出現するカンマ(,)は無視します。小数点が指定されている場合、それ以降最初に出現した数字以外の文字の前までを小数部とみなします。
/doc/moneyが示す要素の値から数値を抜き出し、1000と一致するデータを検索します。
/doc/money = 1000
以下の例では、パス式に指定した要素の値に、複数の数値を含みます。このような場合は、最初に見つけた数値を値とみなします。
<money>ABC123,456@789</money>
123456とみなします。
<money>123456 7890123</money>
123456とみなします。
<money>1,500千円</money>
1500とみなします。
検索データに有効な数値文字列が存在しない場合、その条件は偽となります。
以下の検索対象文字列の場合は、有効な数値文字列が存在しません。
<money></money>
注意
数値検索ではパス式の最後に、パス演算子“//”は指定できません。
数値検索ではパス式の最後に、パス要素“*”は指定できません。
数値検索では項目式に、"$_"は指定できません。
キーワードで指定する数値文字と、パス式で指定した要素の値の桁数をそろえる必要はありません。
/root/moneyが示す要素の値が、1000より大きいデータを検索します。
/root/money > 1000
ポイント
複数のXML文書間で要素の値の整数部および小数部ともに桁数をそろえる必要はありません。
文書A
<money>1000.1</money>
文書B
<money>2000.05</money>
文書C
<money>10.5</money>
参照
val関数の詳細については、“4.3.1 val関数”を参照してください。
日時関数の詳細については、“4.4 単一行関数(日時関数)”を参照してください。