勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLに保存したデータをJSON形式で取得する方法

  MySQL データベース

MySQLに保存したデータをJSON形式で利用したいということがたまにある(JavaScript側でそのデータを使いたい時とか)。そのような場合はPHPのjson_encode関数でJSON形式に変換していた。ただSQL文で直接JSON形式指定できるらしい。以下に方法をメモ。

 

テーブル内容

+----+-----------+-----+---------------------+
| id | name      | age | regist              |
+----+-----------+-----+---------------------+
|  1 | 田中      |  20 | 2023-02-13 16:16:01 |
|  2 | 鈴木      |  30 | 2023-02-13 16:16:24 |
|  3 | 佐々木    |  40 | 2023-02-13 16:16:33 |
+----+-----------+-----+---------------------+

 

SQL文

SELECT
    JSON_PRETTY(
        JSON_OBJECTAGG(
            id, 
            JSON_OBJECT(
                'name', name, 
                'age', age,
                'regist', regist
            )
        )
    ) AS reslut 
FROM json_test;

 

以下が結果になる。

{
  "1": {
    "age": 20,
    "name": "田中",
    "regist": "2023-02-13 16:16:01.000000"
  },
  "2": {
    "age": 30,
    "name": "鈴木",
    "regist": "2023-02-13 16:16:24.000000"
  },
  "3": {
    "age": 40,
    "name": "佐々木",
    "regist": "2023-02-13 16:16:33.000000"
  }
}

 

所感

使いどころは限られそうだけど引き出しとして覚えておく。

 

参考サイト

https://www.wakuwakubank.com/posts/872-mysql-aggregate-json/

 - MySQL データベース

  関連記事

MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法

MySQLで商品価格のような数値の値を3桁ずつのカンマ区切りで取り出したいという ...

MySQLで検索した件数の取得

ページングとかで必要になる総件数について、 いつもググってしまっていたのでメモ。 ...

MySQLにてdate型のカラムから曜日を計算し表示する方法

MySQLにてdateもしくはdatetime型のデータを取り出して曜日もあわせ ...

MySQLでLIKE検索時に大文字・小文字・半角・全角全て区別したい

以前にMySQLであいまい検索時に大文字小文字は区別しないが、それ以外は全て区別 ...

MySQLでホスト指定しても正常に接続できない場合

MySQL自体は動いており、ユーザーも登録されているのに、ホスト名を指定しても正 ...