MySQL JSON形式のデータから値を抽出する

  • 作成日 2021.11.17
  • 更新日 2022.10.21
  • 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形式のデータから値を抽出するには、「JSON_VALUE( )」を使用します。

JSON_VALUE()

実際に、実行して取得してみます。

SELECT 
JSON_VALUE( '{ "name" : "mebee", "age" : 20 }', '$.name' ),
JSON_VALUE( '{ "name" : "mebee", "age" : 20 }', '$.age' )

実行結果を確認すると、取得されていることが確認できます。

存在しない値

存在しない値を指定すると「null」が返ります。

SELECT 
JSON_VALUE( '{ "name" : "mebee", "age" : 20 }', '$.hoge' )

実行結果

配列

配列データでも取得することが可能です。

SELECT 
JSON_VALUE( '{ "name" : "mebee", "skill" : ["java","vue","react"] }', '$.skill[0]' ),
JSON_VALUE( '{ "name" : "mebee", "skill" : ["java","vue","react"] }', '$.skill[1]' ),
JSON_VALUE( '{ "name" : "mebee", "skill" : ["java","vue","react"] }', '$.skill[2]' )

実行結果

ネスト

ネストされたデータも取得可能です。

SELECT 
JSON_VALUE(
    '{ 
        "id" : 1, 
        "person" : { 
            "name" : "mebee",
            "age" : 25
            } 
    }', 
    '$.person.name' 
    );

実行結果