MySQL json型データを抽出する

  • 作成日 2022.01.25
  • 更新日 2022.10.17
  • mysql
MySQL json型データを抽出する

MySQLで、json型データを抽出する手順を記述してます。

環境

  • OS ubuntu21.10
  • MySQL Ver 8.0.27-0ubuntu0.21.10.1 for Linux on x86_64 ((Ubuntu))
  • MySQL Workbench 8.0.27

手順

まずは、以下のjson型のテーブルを作成します。

CREATE TABLE `json_test` (`c1` JSON);

以下のデータをinsertします。

INSERT INTO `json_test`
VALUES
('{
    "userId": 1,
    "id": 1,
    "title": "delectus aut autem",
    "completed": false
  }'),
('  {
    "userId": 1,
    "id": 2,
    "title": "quis ut nam facilis et officia qui",
    "completed": false
  }');

確認してみます。

SELECT * FROM json_test;

jsonデータがinsertされていることが確認できます。

キーを指定して抽出

json型はキーを指定して抽出することが可能です。

SELECT `c1`->"$.id",`c1`->"$.title" FROM json_test;

実行結果

where句にも、使用できます。

SELECT `c1`->"$.id",`c1`->"$.title" FROM json_test
WHERE `c1`->"$.id"= 1;

実行結果

「”」を削除する場合は「JSON_UNQUOTE」を使用します。

SELECT `c1`->"$.id",JSON_UNQUOTE(`c1`->"$.title") FROM foo.json_test;

実行結果