Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak pobrać dane JSON z MySQL?

Ponieważ wiele osób zadało mi to pytanie osobiście, pomyślałem, że podam tę odpowiedź jeszcze raz. Oto przegląd zawierający kompletny SQL z SELECT, Migration i View Creation i skrzypce sql na żywo (dostępność nie jest gwarantowana dla skrzypiec) .

Załóżmy, że masz tabelę (o nazwie:TBL_JSON) w następujący sposób:

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

Aby wybrać poszczególne pola json, możesz wykonać:

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;

które wyniki:

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

Może to być kosztowna operacja do uruchomienia w oparciu o rozmiar danych i złożoność json. Proponuję używać go do

  1. Migracja tabeli do podzielonej bazy danych (Zobacz dodatek 2-B w skrócie)
  2. Przynajmniej utwórz widok (Zobacz dodatek 2-C w skrócie)

Uważaj na:możesz mieć json zaczynający się od podwójnych cudzysłowów (zwięzły):

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

Testowane z Mysql 5.7 na Ubuntu i Mac OSX Sierra.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podzielić ciąg w MySQL

  2. Jak nadać każdemu zarejestrowanemu użytkownikowi własny adres URL za pomocą PHP?

  3. count(*) i count(nazwa_kolumny), jaka jest różnica?

  4. Dlaczego ten kod SQL daje błąd 1066 (Nieunikalna tabela/alias:„użytkownik”)?

  5. Używanie OpenVPN do zabezpieczania dostępu do klastra baz danych w chmurze