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

MySQL 5.7:Převeďte jednoduchý JSON_ARRAY na řádky

Můžete to udělat v MySQL 8.0 pomocí JSON_TABLE() :

select r.res from mytable, 
 json_table(mytable.content, '$[*]' columns (res int path '$')) r 
where mytable.id = 1

Testoval jsem na MySQL 8.0.17 a toto je výstup:

+------+
| res  |
+------+
|    3 |
|    4 |
+------+

Pokud používáte verzi starší než MySQL 8.0, máte tyto možnosti:

  • Najděte nějaké neuvěřitelně složité řešení SQL. Toto je téměř vždy špatný způsob, jak problém vyřešit, protože skončíte s kódem, jehož údržba je příliš nákladná.
  • Načtěte pole JSON tak, jak je, a rozložte jej do kódu aplikace.
  • Normalizujte svá data, abyste místo použití polí JSON měli jednu hodnotu na řádek.

Na Stack Overflow často nacházím otázky o používání JSON v MySQL, které mě přesvědčují, že tato funkce zničila MySQL. Vývojáři to stále používají nevhodně. Líbí se jim, že je snadné vkládat polostrukturovaná data, ale zjistí, že to vytváří dotazování ta data jsou příliš složitá.




  1. Nepodařilo se upgradovat SonarQube z 4.5.2 na 5.0

  2. kolaps limitu mysql, což má za následek interakci dat

  3. Chyba přihlášení SQL Server 2008 Windows Auth:Přihlášení pochází z nedůvěryhodné domény

  4. Vícesloupcový index na 3 polích s heterogenními datovými typy