7.14.10. in_values
¶
7.14.10.1. 概要¶
バージョン 4.0.7 で追加.
in_values
は 複数の OR
や ==
を使っているクエリを簡略化できます。複数の OR
や ==
を使うよりは in_values
を使うのがパフォーマンスの観点からおすすめです。
7.14.10.2. 構文¶
query
は2以上の引数 - target_value
と 複数の value
が必要です。
in_values(target_value, value1, ..., valueN)
7.14.10.3. 使い方¶
使い方を示すために使うスキーマ定義とサンプルデータは以下の通りです。
サンプルスキーマ:
実行例:
table_create Tags TABLE_PAT_KEY ShortText
# [[0, 1337566253.89858, 0.000355720520019531], true]
table_create Memos TABLE_HASH_KEY ShortText
# [[0, 1337566253.89858, 0.000355720520019531], true]
column_create Memos tag COLUMN_SCALAR ShortText
# [[0, 1337566253.89858, 0.000355720520019531], true]
column_create Tags memos_tag COLUMN_INDEX Memos tag
# [[0, 1337566253.89858, 0.000355720520019531], true]
サンプルデータ:
実行例:
load --table Memos
[
{"_key": "Groonga is fast", "tag": "groonga"},
{"_key": "Mroonga is fast", "tag": "mroonga"},
{"_key": "Rroonga is fast", "tag": "rroonga"},
{"_key": "Droonga is fast", "tag": "droonga"},
{"_key": "Groonga is a HTTP server", "tag": "groonga"}
]
# [[0, 1337566253.89858, 0.000355720520019531], 5]
in_values
関数を使って tag
カラムの値が "groonga" 、 "mroonga" あるいは "droonga" であるものを選択する例を示します。
実行例:
select Memos --output_columns _key,tag --filter 'in_values(tag, "groonga", "mroonga", "droonga")' --sortby _id
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 4
# ],
# [
# [
# "_key",
# "ShortText"
# ],
# [
# "tag",
# "ShortText"
# ]
# ],
# [
# "Groonga is fast",
# "groonga"
# ],
# [
# "Mroonga is fast",
# "mroonga"
# ],
# [
# "Droonga is fast",
# "droonga"
# ],
# [
# "Groonga is a HTTP server",
# "groonga"
# ]
# ]
# ]
# ]
クエリを実行すると、"rroonga"を除いた結果を得られます。"rroonga"は in_values
には指定していないからです。
7.14.10.4. 引数¶
二つ以上の引数が必須です。 target_valule
と 1つ以上の value
です。
7.14.10.4.1. target_value
¶
select
対象の table
に指定されたテーブルのカラムを指定します。
7.14.10.4.2. value
¶
選択したいカラムの値を指定します。
7.14.10.5. 戻り値¶
in_values
は対象となるカラムに指定した値が含まれるかを返します。
もし該当するレコードがあれば、 true
を返します。そうでなければ false
を返します。