MariaDBでjsonデータが入っているカラムへwhere条件で検索するには?

開発メモです。

MariaDBはMySQLと同じく、JSONデータ型をサポートしています。JSONデータが入っているカラムへのWHERE条件での検索は、MariaDBではJSON_EXTRACT関数を使用して行います。以下は、JSONデータが格納されているカラムから特定の値を検索するための例です。

例として、your_tableというテーブルがあり、その中にjson_columnというJSONデータ型のカラムがあると仮定します。json_columnに格納されたJSONデータから特定の条件を持つ行を検索するには、次のようにJSON_EXTRACT関数を使用します。

-- SQL --
SELECT *
FROM your_table
WHERE JSON_EXTRACT(json_column, '$.key') = 'value';

このクエリでは、json_columnから$.keyというJSONパスを使用して、JSONデータ内の特定のキー(”key”)に対応する値が指定した値(”value”)と一致する行を検索します。

JSONデータ内のネストされたキーにアクセスする場合、JSONパスを適切に調整してください。JSONパスはJSONデータのツリー構造をたどるための方法です。

目次

MariaDBでJSON型カラムにWhere検索をかける例

MariaDBのJSONデータ型のカラムで、”id”が1082971を含む行を検索するWHERE句は次のようにします。

SELECT *
FROM your_table
WHERE JSON_SEARCH(json_column, 'one', '1082971', NULL, '$.id') IS NOT NULL;

このSQLクエリは、JSON_SEARCH関数を使用して、json_column内で'1082971'(探す値)を含むかどうかを検索しています。JSON_SEARCH関数は、指定したJSONパス内で指定した値を検索し、その値が存在する場合、その値を返します。'one'は検索モードを指定するために使用され、NULLはオプションのパラメータです。'$'はJSONパスのルートを表し、$.idは”id”キーが存在する場所を指定します。上記のクエリを実行すると、”id”が1082971を含む行が選択されます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次