Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como recuperar dados JSON do MySQL?


Como muitas pessoas me fizeram essa pergunta pessoalmente, pensei em dar uma segunda revisão a essa resposta. Aqui está uma essência que tem o SQL completo com SELECT, migração e criação de visualização e um violino sql ao vivo (disponibilidade não garantida para violino) .

Digamos que você tenha uma tabela (chamada:TBL_JSON) assim:
 ID   CITY        POPULATION_JSON_DATA
-----------------------------------------------------------------------
 1    LONDON      {"male" : 2000, "female" : 3000, "other" : 600}
 2    NEW YORK    {"male" : 4000, "female" : 5000, "other" : 500}

Para selecionar cada campo json, você pode fazer:
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;

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

Essa pode ser uma operação cara para executar com base no tamanho dos dados e na complexidade do json. Eu sugiro usá-lo para
  1. Migração da tabela para o banco de dados dividido (Consulte o Apêndice 2-B na essência)
  2. Pelo menos crie uma visualização (Consulte o Apêndice 2-C na essência)

Cuidado com:Você pode ter json começando com aspas duplas (stringido):
"{"male" : 2000, "female" : 3000, "other" : 600}"

Testado com Mysql 5.7 no Ubuntu e Mac OSX Sierra.