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

MySQL 5.7:преобразувайте простия JSON_ARRAY в редове

Можете да направите това в MySQL 8.0 с JSON_TABLE() :

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

Тествах на MySQL 8.0.17 и това е изходът:

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

Ако използвате версия, по-стара от MySQL 8.0, имате следните опции:

  • Намерете някакво невъзможно сложно SQL решение. Това почти винаги е грешен начин за решаване на проблема, защото в крайна сметка получавате код, който е твърде скъп за поддръжка.
  • Извлечете JSON масива такъв, какъвто е, и го разглобете в кода на приложението.
  • Нормализирайте данните си, така че да имате една стойност на ред, вместо да използвате JSON масиви.

Често намирам въпроси в Stack Overflow относно използването на JSON в MySQL, които ме убеждават, че тази функция е съсипала MySQL. Разработчиците продължават да го използват неправилно. Харесва им, че улеснява вмъкването полуструктурирани данни, но те откриват, че те правят запитване тези данни са твърде сложни.




  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. (My)SQL пълно присъединяване с три таблици

  3. mysql_insert_id безопасен ли е за използване?

  4. Изберете от таблица А, която не съществува в таблица Б

  5. MySQL - Entity :Стойността за колона 'IsPrimaryKey' в таблица 'TableDetails' е DBNull