Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да извлека JSON данни от MySQL?

Тъй като много хора са ми задавали този въпрос лично, реших да дам на този отговор втора ревизия. Ето същност, която има пълния SQL с SELECT, миграция и създаване на изглед и жива 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}"

Тестван с Mysql 5.7 на Ubuntu и 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. Функция MySQL ASIN() – Връща дъга синус на число

  2. MySQL Group By и Sum общата стойност на друга колона

  3. Симулирайте функцията на забавяне в MySQL

  4. Групово максимум

  5. Мога ли да използвам повторно изчислено поле в заявка SELECT?