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

Вземете Json ключове в MySQL за определена стойност

Както казах, анализирането на JSON в MySQL може да бъде предизвикателство, тъй като тук работите с текстови ключове.
Така че ще трябва да използвате JSON_KEYS() за да ги получите в комбинация с генератор на числа, се генерира динамичен JSON път, който да се използва в JSON_EXTRACT()

8 функция на MySQL JSON_TABLE() го прави много по-лесно..

Запитване

 SELECT JSON_UNQUOTE( JSON_EXTRACT(json , CONCAT('$.', SUBSTRING_INDEX( SUBSTRING_INDEX(json_parsed, ',', number_generator.number) , ',' , -1 ), '.name'))) КАТО имеFROM ( SELECT @row :=@row + 1 КАТО номер FROM ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) ред 1 КРЪСТО ПРИСЪЕДИНЕНИЕ ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) row2 CROSS JOIN ( SELECT @row :=0 ) init_user_params ) AS STRING SUB number_generator (SELECT STRING JOIN_generator json_keys, 2, json_keys_length - 2) КАТО json_parsed , json_keys , json , JSON_LENGTH(json_keys) КАТО json_array_length FROM ( SELECT JSON_KEYS(record.json) КАТО json_keys(record.json) КАТО json_keys(record.json) AS json_keys(record.json) AS json_keys,json_keys, json_keys. h FROM ( SELECT '{ "Intitule":{ "name":"Intitule de la formation", "stats":false, "is_array":false, "is_filter":true, "chart":"pie", "col ":"6" }, "Fin":{ "name":"Date de fin", "stats":false, "is_array":false, "is_filter":false, "chart":"pie", "col ":"6" } }' КАТО json ОТ DUAL ) КАТО запис ) КАТО json_information ) КАТО json_initWHERE number_generator.number МЕЖДУ 0 И json_array_length И JSON_EXTRACT(json , CONCAT('$.', SUB'son_STRING_INDEX, SUB'son_STRING_INDEX, SUB'son_array_length). number_generator.number) , ',' , -1 ), '.is_filter')) =вярно  

Резултат

<предварителен код>| име || ------------------------ || Intitule de la formation |

вижте демо



  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 е отказан

  2. Заявката за база данни C# не работи

  3. Как да настроите и да влезете като root потребител в MySQL

  4. Как да изберете първия и последния ред с данни от резултат от mysql?

  5. синтактична грешка на DECLARE CURSOR FOR