JSON_EXTRACT()関数とJSON_UNQUOTE()関数を使ったJSON値の抽出
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