開発メモです。
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を含む行が選択されます。
