sql >> データベース >  >> RDS >> Mysql

MySQLからJSONデータを取得する方法は?

    個人的に多くの方から質問がありましたので、改めてこの回答をさせていただきたいと思いました。これが SELECT、移行、ビュー作成を備えた完全なSQLを備えた要点 です。 およびライブSQLフィドル (フィドルの可用性は保証されません)

    次のようなテーブル(名前:TBL_JSON)があるとします:

     ID   CITY        POPULATION_JSON_DATA
    -----------------------------------------------------------------------
     1    LONDON      {"male" : 2000, "female" : 3000, "other" : 600}
     2    NEW YORK    {"male" : 4000, "female" : 5000, "other" : 500}
    

    各jsonフィールドを選択するには、次のようにします。

    SELECT 
        ID, CITY,
        json_extract(POPULATION_JSON_DATA, '$.male') AS POPL_MALE,
        json_extract(POPULATION_JSON_DATA, '$.female') AS POPL_FEMALE,
        json_extract(POPULATION_JSON_DATA, '$.other') AS POPL_OTHER
    FROM TBL_JSON;
    

    結果:

    ID  CITY      POPL_MALE  POPL_FEMALE   POPL_OTHER 
    -----------------------------------------------------------------
    1   LONDON    2000       3000          600
    2   NEW YORK  4000       5000          500
    

    これは、データサイズとjsonの複雑さに基づいて、実行するのにコストのかかる操作になる可能性があります。に使用することをお勧めします

    1. データベースを分割するためのテーブルの移行(要点の付録2-Bを参照)
    2. 少なくともビューを作成する(付録2-Cの要点を参照)

    注意:jsonが二重引用符で始まる場合があります (文字列化):

    "{"male" : 2000, "female" : 3000, "other" : 600}"
    

    UbuntuおよびMacOSXSierraでMysql5.7を使用してテスト済み。



    1. ストアドプロシージャを使用する利点と欠点

    2. SQLを使用して例外のあるORDERBY句を作成する方法

    3. 東京のMariaDB

    4. MySQL空間拡張を使用して、円内のポイントを選択します