7.15.12. in_values — Groonga v9.1.1-76-g53aa7c4 documentation

# groonga - An open-source fulltext search engine and column store.

- 日本語

# 7.15.12. `in_values`

## 7.15.12.1. Summary

New in version 4.0.7.

`in_values` enables you to simplify the query which uses multiple `OR` or `==`. It is recommended to use this function in point of view about performance improvements in such a case.

## 7.15.12.2. Syntax

`in_values` requires two or more arguments - `target_value` and multiple `value`.

    in_values(target_value, value1, ..., valueN)

## 7.15.12.3. Usage

Here is a schema definition and sample data.

Sample schema:

Execution example:

    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]

Sample data:

Execution example:

    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]

Here is the simple usage of `in_values` function which selects the records - the value of `tag` column is “groonga” or “mroonga” or “droonga”.

Execution example:

    select Memos --output_columns _key,tag --filter 'in_values(tag, "groonga", "mroonga", "droonga")' --sort_keys _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"
    #       ]
    #     ]
    #   ]
    # ]

When executing the above query, you can get the records except “rroonga” because “rroonga” is not specified as value in `in_values`.

## 7.15.12.4. Parameters

There are two or more required parameter, `target_value` and multiple `value`.

### 7.15.12.4.1. `target_value`

Specifies a column of the table that is specified by `table` parameter in `select`.

### 7.15.12.4.2. `value`

Specifies a value of the column which you want to select.

## 7.15.12.5. Return value

`in_values` returns whether the value of column exists in specified the value of parameters or not.

If record is matched to specified the value of parameters, it returns true. Otherwise, it returns false.