たのしいXML: XQuery: where句の例(2)

2008年11月23日(日)更新


■where句の論理演算子 AND, OR

たけち: 前回はwhere句を使って、検索の絞込みの例をみたね。

さらら: えぇ。

たけち: 今回はwhere句の別の例を試してみよう

さらら: はい。

たけち: where句では、条件を絞り込むためのに、ANDORが使えるんだ。

さらら: へぇ〜。じゃあ、いろいな複雑な検索条件が書けるのね。

たけち: そうだね。


■関数: 文字列関数

たけち: それと、XQueryではXMLデータを扱うために便利なようにいろいろな関数が用意されているんだ。

さらら: へぇ。

たけち: 関数には、文字列(string)、論理、数値、日付、シーケンス、QNAME、ノードなどのカテゴリーがあるけど、今回は文字列関数を使ってみるね。

さらら: はい。どんなのかしら。

たけち: 今回は文字列(string)関数を紹介するね。

文字列(string)関数

関数名概要
fn:codepoints-to-string

Unicodeコードポイントのならびに相当する文字列を戻します。

fn:compare

2つの文字列を比較します。

fn:concat

指定した文字列を連結した文字列を戻します。

fn:contains

文字列に指定した文字列が含まれるかどうかを判断します。

fn:ends-with

文字列が指定した文字列で終わっているかどうかを判断します。

fn:lower-case

文字列を小文字に変換します。

fn:matches

文字列が指定されたパターンに一致するかどうかを判断します。

fn:normalize-space

文字列から、前後の空白を除去し、文字列内部の連続した空白文字列をひとつの空白文字に置き換えます。

fn:normalize-unicode

文字列をUnicode正規化します。

fn:replace

文字列を指定されたパターンで置き換えします。

fn:starts-with

文字列が指定された文字列で始まっているかどうかを判断します。

fn:string

指定した値の文字列を戻します。

fn:string-join

文字列を連結した文字列を戻します。

fn:string-length

文字列の長さを戻します。

fn:string-to-codepoints

文字列に対するUnicodeのコードポイントの並びを戻します。

fn:substring

文字列の一部の文字列を戻します。

fn:substring-after

文字列の指定された文字列の後ろの文字列を戻します。

fn:substring-before

文字列の指定された文字列の前の文字列を戻します。

fn:tokenize

文字列を分割した文字列の並びを戻します。

fn:tokenize

文字列を指定した区切り文字で分割した文字列の並びを戻します。

fn:translate

文字列の指定した文字列を(別の)指定した文字列で置き換えます。

fn:upper-case

文字列を大文字に変換します。

さらら: たくさんあるわね。

たけち: 今回は、比較的よく使いそうなものでfn:containsを使ってみよう。

さらら: はい。

たけち: 前回のwhere句の例では、poem要素のpoet属性の内容が"額田王"のpoem要素に絞り込んだけど、今回は、その条件に、さらに、yomiの内容に"あかね"を含んだものに絞り込んでみよう。

さらら: それだと、「あかねさす紫野行き標野行き野守は見ずや君が袖振る」という歌が検索結果として得られるのね。

たけち: そうだね。じゃ、さっそく、例を実行してみよう。


poem要素の検索例: whereで絞り込み

コマンドエディタで

    xquery
    for $input in db2-fn:xmlcolumn("MANYO01.POEM")/poem
    where ($input/@poet = "額田王") and fn:contains($input/yomi, 'あかね')
    return $input   ;

を入力します。

where句で属性を指定(例)

さらら: あっ、予想通り、「あかねさす紫野行き標野行き野守は見ずや君が袖振る」のpoem要素が表示されたわ。

たけち: 前回のwhere句に、and fn:contains($input/yomi, 'あかね')が追加されているのがわかるね。fn:contains関数で、yomi要素の内容にあかねを含んでいるものに絞り込んでいるんだね。

さらら: はい。

たけち: 図でこの様子を確認しておこうね。

さらら: はい。

where句で属性と文字列の内容を指定(例)

さらら: なるほど。私にもわかるわ。これってうろ覚えの歌を検索するときに便利よね。(^ ^;

たけち: そうだね。

さらら: はい。わかったわ。

たけち: これからも少しずつ複雑な検索式にトライしてみようね。

さらら: は〜い。ありがと。

→次回はorder by句です。 (^ ^;


[たのしいXML のインデックス]へ