スマートスタイル TECH BLOG

データベース&クラウド技術情報

MySQLでJSON型を使う(JSON関数編)

はじめに

以前弊社のブログで下記のような、MySQLでJSONを扱う記事をアップさせていただきました。
MySQLでJSON型を使う(基本編)
MySQLでJSON型を使う(パフォーマンス編)
MySQLでJSON型を使う(論理設計編)

今回はJSON関数に関してのアップデートについてご紹介したいと思います。

記載する内容は下記のファンクションです。

  • JSON_PRETTY()
  • JSON_ARRAYAGG()
  • JSON_OBJECTAGG()

なおJSON周りのファンクションについての公式ページはこちらです。

今回のMySQL Serverのバージョンは [ 8.0.15 MySQL Community Server – GPL ]で確認しています。

JSON_PRETTY()

最近よくawscliを使用して、データを取得するのですが、その際に取得出来る
データをMySQLに入れてみました。

以下のように、各EC2インスタンスの情報をレコードを分けて入れてます。

まずはデータを入れるテーブルを作成

以上でデータのロードは終了です。
確認してみます。

データをテーブルにロードする際に、改行とインデントを除いているため、非常に見辛いです。
そんな時はJSON_PRETTY()が便利です。

改行とインデントが入り、awscliで見慣れた形式で出力してくれます。

SELECTの結果にも使えるので、例えば下記の実行すると特定のSecurityGroupIdを使用しているインスタンスだけを抜き出して、その結果を見易くしたりも出来ます。

JSON_ARRAYAGG()

こちらはテーブルデータをJSON配列にしてくれる集計関数です。

上記のようなテーブルがあった時に

特定のキーに対して、値を配列で出すことが出来ます。

JSON_OBJECTAGG()

そしてこちらは、テーブルデータをJSONオブジェクトにしてくれる集計関数です。
気にしなければいけないポイントとして、キーが重複している場合、下記のように上書きされてしまいます。

そのため、WITH句を使用するなどして対応が必要になります。

まとめ

上記のようなデータはawscliやjqコマンドなどでも抜き出すことは可能だと思います。
ただ、普段からMySQLを扱っている方には、JSONを扱えることが増えると色々捗りますよね。


MySQL
Return Top