JSON_EXTRACT()関数とJSON_UNQUOTE()関数を使ったJSON値の抽出

2024-04-02

MariaDBデータベースからJSON値を抽出する構文

JSON_EXTRACT() 関数は、JSONドキュメントから指定されたキーの値を抽出するために使用されます。

構文:

SELECT JSON_EXTRACT(column_name, path) FROM table_name;

パラメータ:

  • column_name: JSONドキュメントを含む列名
  • path: 抽出したい値のキーのパス

例:

SELECT JSON_EXTRACT(data, '$.name') FROM users;

この例では、users テーブルの data 列から name キーの値を抽出します。

複数の値を抽出する

JSON_EXTRACT() 関数は、複数の値を抽出するために使用することができます。

SELECT JSON_EXTRACT(data, '$.name'), JSON_EXTRACT(data, '$.age') FROM users;

JSON_UNQUOTE() 関数は、JSON文字列から引用符を取り除くために使用されます。

SELECT JSON_UNQUOTE(JSON_EXTRACT(column_name, path)) FROM table_name;
SELECT JSON_UNQUOTE(JSON_EXTRACT(data, '$.name')) FROM users;

上記の2つの方法以外にも、JSON値を抽出する方法はいくつかあります。

  • -> 演算子
  • JSON_TABLE() 関数

これらの方法については、MariaDBの公式ドキュメントを参照してください。

MariaDBデータベースからJSON値を抽出するには、いくつかの方法があります。ここでは、最も一般的な方法である JSON_EXTRACT() 関数と JSON_UNQUOTE() 関数を使った方法を解説しました。

これらの方法を理解することで、MariaDBデータベースに保存されたJSONデータから必要な情報を効率的に抽出することができます。




-- テーブル作成
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  data JSON,
  PRIMARY KEY (id)
);

-- データ挿入
INSERT INTO users (data) VALUES ('{"name": "John Doe", "age": 30}');
INSERT INTO users (data) VALUES ('{"name": "Jane Doe", "age": 25}');

-- 1. `JSON_EXTRACT()` 関数を使った抽出

-- 名前を抽出
SELECT JSON_EXTRACT(data, '$.name') FROM users;

-- 年齢を抽出
SELECT JSON_EXTRACT(data, '$.age') FROM users;

-- 2. `JSON_UNQUOTE()` 関数を使った抽出

-- 名前を抽出 (引用符を取り除く)
SELECT JSON_UNQUOTE(JSON_EXTRACT(data, '$.name')) FROM users;

-- 年齢を抽出 (引用符を取り除く)
SELECT JSON_UNQUOTE(JSON_EXTRACT(data, '$.age')) FROM users;

-- 3. 複数の値を抽出

-- 名前と年齢を抽出
SELECT JSON_EXTRACT(data, '$.name'), JSON_EXTRACT(data, '$.age') FROM users;

-- 4. `->` 演算子を使った抽出

-- 名前を抽出
SELECT data->'$.name' FROM users;

-- 年齢を抽出
SELECT data->'$.age' FROM users;

-- 5. `$.` 演算子を使った抽出

-- 名前を抽出
SELECT data.$'name' FROM users;

-- 年齢を抽出
SELECT data.$'age' FROM users;

-- 6. `JSON_TABLE()` 関数を使った抽出

-- テーブル形式で抽出
SELECT * FROM JSON_TABLE(data, '$[*]' COLUMNS (name VARCHAR(255), age INT));

このコードを実行することで、MariaDBデータベースからJSON値を抽出することができます。




MariaDBデータベースからJSON値を抽出するその他の方法

-> 演算子は、JSONドキュメントのキーをアクセスするために使用することができます。

SELECT data->'$.name' FROM users;

$. 演算子は、JSONドキュメントのキーをアクセスするために使用することができます。-> 演算子と似ていますが、より簡潔な構文で記述することができます。

SELECT data.$'name' FROM users;

JSON_TABLE() 関数は、JSONドキュメントをテーブル形式に変換するために使用することができます。

SELECT * FROM JSON_TABLE(data, '$[*]' COLUMNS (name VARCHAR(255), age INT));

この例では、users テーブルの data 列のJSONドキュメントをテーブル形式に変換し、name 列と age 列として抽出します。

その他の関数

MariaDBには、JSON値を抽出するために使用できるその他の関数も用意されています。

  • JSON_LENGTH() 関数: JSONドキュメントの長さを取得する
  • JSON_VALID() 関数: JSON文字列が有効かどうかを確認する

MariaDBデータベースからJSON値を抽出するには、いくつかの方法があります。上記で紹介した方法の中から、目的に合った方法を選択することができます。


mariadb


ERPNext: Windows でオープンソース ERP を活用する

2 つの主要な方法があります。Docker を使用するDocker は、アプリケーションをコンテナーでパッケージ化および実行するためのプラットフォームです。 ERPNext を Docker コンテナーとしてインストールすると、Windows 固有の依存関係を気にすることなく簡単に実行できます。...


MySQL/MariaDB で ENUM 列をグループ化し、すべての値を含むカウントを取得する方法

例として、以下のテーブル products を使用します。このテーブルには、製品名とカテゴリを表す列があります。category 列は ENUM 型で、electronics、clothing、books のいずれかの値をとることができます。...


MariaDB 10.3.18 で 2 件のランダムな個別レコードを取得する 3 つの方法

要件MariaDB 10. 3.18 以降がインストールされているサンプルデータを含むテーブル手順CTE (Common Table Expression) を使用して、各行にランダムな行番号を割り当てます。rn 列が 1 の 2 件のレコードを選択します。...


MariaDBで".sql"データベースインポートが機能しない - 原因と解決策

MariaDBで ".sql" データベースをインポートしようとすると、ストアドプロシージャーエラーが発生してインポートが失敗する。原因このエラーは、いくつかの原因によって発生する可能性があります。インポートしようとしている ".sql" ファイルに、構文エラーや論理エラーがある。...


MariaDBで「CREATE FUNCTION DELIMITER doesn't work. has error near ''」エラーが発生した時の解決方法

MariaDBでストアドファンクションを作成しようとすると、「CREATE FUNCTION DELIMITER doesn't work. has error near ''」というエラーが発生する場合があります。このエラーは、デリミタ設定に問題があることが原因です。...