sql >> Databáze >  >> RDS >> Mysql

Jak načíst data JSON z MySQL?

Vzhledem k tomu, že se mě na tuto otázku osobně ptalo mnoho lidí, myslel jsem, že tuto odpověď dám ještě jednou revizí. Zde je podstata, která obsahuje kompletní SQL s SELECT, migrací a vytvářením zobrazení a živé sql housle (dostupnost není zaručena pro housle) .

Řekněme, že máte tabulku (s názvem:TBL_JSON) takto:

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

Chcete-li vybrat jednotlivá pole json, můžete:

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;

což má za následek:

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

Spuštění této operace může být nákladné na základě velikosti dat a složitosti json. Doporučuji jej používat pro

  1. Migrace tabulky do rozdělené databáze (Viz příloha 2-B v souhrnu)
  2. Vytvořte alespoň zobrazení (viz příloha 2-C v souhrnu)

Dejte si pozor na:Možná máte json začínající dvojitými uvozovkami (stringified):

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

Testováno s Mysql 5.7 na Ubuntu a Mac OSX Sierra.



  1. SYSDATETIME() vs GETDATE() v SQL Server:Jaký je rozdíl?

  2. MySQL utf8mb4, Chyby při ukládání emotikonů

  3. JSON_STORAGE_FREE() – Zjistěte, kolik úložného prostoru bylo uvolněno po aktualizaci dokumentu JSON v MySQL

  4. Pochopení uzamčení SQL Serveru na zabezpečené databázové prostředí