以下にリターン式の例を示します。
<doc> <companyname>fujitsu</companyname> <employee position="manager"> <name>tanaka</name> <id>2000</id> <age>30才</age> <comment></comment> </employee> </doc> |
<doc> <companyname>fujitsu</companyname> <employee position="chief"> <name>suzuki</name> <id>1000</id> <age>35才</age> <comment>team leader</comment> </employee> </doc> |
リターン式
avg(/doc/employee/age/text())
ソート式
/doc/companyname/text()
結果
32.5
リターン式
count(/doc/employee/@position)
ソート式
/doc/employee/text()
結果
2
複数のリターン項目を指定した場合は、結果として返す各リターン項目の値が区切り文字で区切られます。
Java APIの場合
getStringメソッドまたはgetStreamメソッドで検索した結果を取り出す場合
各リターン項目で返す値は、“,”で区切られます。
getStringArrayメソッドで検索した結果を取り出す場合
リターン項目単位にStringの2次元配列として返却します。
上位配列の要素数は、リターン式の数です。下位配列の要素数は、1です。
C APIの場合
各リターン項目で返す値は、文字コード“\001”の文字で区切られます。
返却される値の最後には必ず“\001”の文字が付加されます。
リターン式
avg(/doc/employee/age/text()),count(/doc/employee/name/text())
ソート式
/doc/companyname/text()
結果
32.5,2
注意
テキスト式で指定したテキストノードまたは属性式で指定した属性ノードが同一文書中に複数存在する場合は、先頭のテキストノードの値または属性ノードの値を利用します。
以下の場合、avg関数の引数“/student/subject/test/score/text()”の値は、文書Aは集計の対象外、文書Bは80、文書Cは0として扱います。
文書A
<student> <name>tanaka</name> <subject> <subjectname>science</subjectname> </subject> <name>tanaka</name> </student> |
文書B
<student> <name>suzuki</name> <subject> <subjectname>science</subjectname> <test> <date>2006年01月12日</date> <score>80</score> |
文書C
<student> <name>satou</name> <subject> <subjectname>science</subjectname> <test> <date>2006年01月12日</date> <score>--</score> </test> </subject> </student> |
リターン式
avg(/student/subject/test/score/text())
ソート式
/student/subject/subjectname/text()
結果
40