MySQLでオブジェクトのJSON配列を検索したり、JSONデータを抽出したり、JSONデータを取得したりする必要がある場合があります。この記事では、MySQLでJSON列をクエリする方法を見ていきます。
MySQLでJSON列をクエリする方法
次のテーブルがあるとしますusers(id、details) ここでid は整数で主キーですが、詳細 em> JSONデータ型の列です。
create table users(
id int auto_increment primary key,
details json
); 次のJSONデータをテーブルに挿入します。
insert into users(details)
values(
'{ "page": "/" ,
"name": "Safari",
"os": "Mac",
"spend": [100, 50]
"resolution": { "x": 1920, "y": 1080 } }'
),
(
'{ "page": "/products",
"name": "Chrome",
"os": "Windows",
"spend": [150, 250]
"resolution": { "x": 1680, "y": 1050 } }'
),
(
'{ "page": "/shoes",
"name": "Firefox",
"os": "Windows",
"spend": [200,300]
"resolution": { "x": 1280, "y": 800 } }'
);
MySQLのJSON列からデータを取得する方法
MySQLには、JSON列からデータを抽出するための2つの演算子(->と->>)が用意されています。
->>は文字列値を取得し、->は引用符なしで値を取得します。
詳細em>からブラウザ名を抽出するSQLクエリは次のとおりです。 列
mysql> select id,
details->>'$.name' as browser_str,
details->'$.name' as browser_name
from users;
+----+--------------+--------------+
| id | browser_str | browser_name |
+----+--------------+--------------+
| 1 | "Safari" | Safari |
| 2 | "Chrome" | Chrome |
| 3 | "Firefox" | Firefox |
+----+--------------+--------------+ ご覧のとおり、->>は引用符で囲まれた文字列として出力を返しますが、->は値をそのまま返します。
以下に示すように、WHERE句でこれらの演算子を使用することもできます。
mysql> select id,
details->>'$.name' as browser_str,
details->'$.name' as browser_name
from users
where ->>'$.name'="Chrome";
+----+--------------+--------------+
| id | browser_str | browser_name |
+----+--------------+--------------+
| 2 | "Chrome" | Chrome |
+----+--------------+--------------+ resolution.xを取得する場合 値、つまりオブジェクトから、以下に示すように、ドット(。)演算子を使用してこれを行うことができます。
mysql> select details->'$.resolution.x' as width
from users;
+----+-----------+
| id | width |
+----+-----------+
| 1 | 1920 |
| 2 | 1680 |
| 3 | 1280 |
+----+-----------+ 同様に、JSONから配列要素を抽出する場合は、角かっこ「[]」と配列要素のインデックスを使用してそれらにアクセスできます。配列の最初の要素を抽出するSQLクエリspendは、次のとおりです。 。
mysql> select details->>'$.spend[0]' as spend
from users;
+----+-----------+
| id | spend |
+----+-----------+
| 1 | 100 |
| 2 | 150 |
| 3 | 200 |
+----+-----------+
Ubiqを使用してJSONを抽出する
Ubiq Reportingツールは、上記のすべてのSQLクエリをサポートし、さまざまな方法でSQL結果を簡単に視覚化できるようにします。これが、Ubiqでの上記の最初のSQLクエリです。
MySQL用のレポートツールが必要ですか? Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。