株式会社NextCodeのロゴ株式会社NextCode

BLOG

ブログ

2021/04/08

意外と知らない?!MySQLのJSON

意外と知らない?!MySQLのJSON

意外と知らないシリーズ第二弾です。

DBMSの中でも人気のMySQLですが、バージョン5.7.8からJSON型をサポートするようになった様です!

「JSONを入れるならTEXT型に入れれば良いのだから、大きな変化ではない」と思う方がいるかもしれません。

確かにその通りです。

ですが、それはJSONを入れる事だけに限った場合です。

JSON型をサポートされる様になった為、その他にもJSONに関わる関数も追加されています!

実際に見ていきましょう。

まずは、この様なテーブルを用意しました。

データとしては、こんな感じです。

{
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
}

これで準備が整いました。

これから行うのは、JSONの中身を見て一致するデータを取得するといったものです。

例)jsonカラムの中身を見て、キー名が「key2」で値が「value2」のものを取得する

今までのやり方だと、LIKEを使用しての部分一致を行うか、そもそもJSONではなくカラムに分けて保存、といったやり方しかなかったと思います。

それが関数にて、簡単に検索が出来ちゃいます。

今回使うのは、JSON_EXTRACTです。

先ほどの例を元に作成したSQLがこちらになります。

SELECT * FROM json_test WHERE JSON_EXTRACT(json, '$.key2') = 'value2'

JSON_EXTRACT関数は、第一引数にカラム名を指定し、第二引数でJSONのキー名を指定して値を取得する事が出来ます。

※「$」は頭を指しており、JSONの中身の検索には必須なので注意。

結果はご覧の通り、取得が行えました!

この様に、JSONを扱うのが非常に簡単に出来ました。

他にも検索方法として「カラム名->$.key = value」とすることも出来ます。

今回はここまでとしますが、JSONに関わる関数は他にも多数存在するので、興味のある方は是非調べて見て下さい。

なお、豆知識ですが「JSON型 = BIGTEXT型」といった感じで、TEXT型にJSONを入れて検索することも出来ます。

JSON型は INSERTする時に正常なJSONでないとエラーになりますが、TEXT型はその判定がないので注意が必要です。

参考リンク

https://dev.mysql.com/doc/refman/5.7/en/json.html

TOPへ移動
PAGE
TOP
%d人のブロガーが「いいね」をつけました。