「Mysql/json」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「==JSONオブジェクトを作る== mysql5.7以降 -- JSON型を使用したテーブル作成 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, profile JSON NO...」) |
|||
| 行1: | 行1: | ||
==JSONオブジェクトを作る== | ==JSONオブジェクトを作る== | ||
mysql5.7以降 | mysql5.7以降 | ||
| + | <pre> | ||
-- JSON型を使用したテーブル作成 | -- JSON型を使用したテーブル作成 | ||
CREATE TABLE users ( | CREATE TABLE users ( | ||
| 行17: | 行18: | ||
FROM users | FROM users | ||
WHERE profile->"$.age" > 25; | WHERE profile->"$.age" > 25; | ||
| + | </pre> | ||
参考:https://blog.s-style.co.jp/2017/05/301/ | 参考:https://blog.s-style.co.jp/2017/05/301/ | ||
2025年5月23日 (金) 16:30時点における版
JSONオブジェクトを作る
mysql5.7以降
-- JSON型を使用したテーブル作成
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
profile JSON NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- JSONデータの挿入
INSERT INTO users (profile) VALUES
('{"name": "山田太郎", "age": 30, "address": {"city": "東京", "zip": "100-0001"}}'),
('{"name": "佐藤花子", "age": 25, "hobbies": ["読書", "旅行"]}');
-- JSONデータの検索
SELECT id, profile->"$.name" AS name, profile->"$.age" AS age
FROM users
WHERE profile->"$.age" > 25;
参考:https://blog.s-style.co.jp/2017/05/301/
mariadbではこう書く
SELECT
id,
JSON_UNQUOTE(JSON_EXTRACT(profile, '$.name')) AS name,
JSON_EXTRACT(profile, '$.age') AS age
FROM users
WHERE JSON_EXTRACT(profile, '$.age') > 25;
+----+--------------+------+
| id | name | age |
+----+--------------+------+
| 1 | 山田太郎 | 30 |
+----+--------------+------+
