個人的に多くの方から質問がありましたので、改めてこの回答をさせていただきたいと思いました。これが
次のようなテーブル(名前: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の複雑さに基づいて、実行するのにコストのかかる操作になる可能性があります。に使用することをお勧めします
- データベースを分割するためのテーブルの移行(要点の付録2-Bを参照)
- 少なくともビューを作成する(付録2-Cの要点を参照)
注意:jsonが二重引用符で始まる場合があります (文字列化):
"{"male" : 2000, "female" : 3000, "other" : 600}"
UbuntuおよびMacOSXSierraでMysql5.7を使用してテスト済み。