Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL 5.7:converti JSON_ARRAY semplice in righe

Puoi farlo in MySQL 8.0 con JSON_TABLE() :

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

Ho testato su MySQL 8.0.17 e questo è l'output:

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

Se utilizzi una versione precedente a MySQL 8.0, hai queste opzioni:

  • Trova una soluzione SQL incredibilmente complessa. Questo è quasi sempre il modo sbagliato per risolvere il problema, perché ti ritrovi con un codice troppo costoso da mantenere.
  • Recupera l'array JSON così com'è ed esplodilo nel codice dell'applicazione.
  • Normalizza i tuoi dati in modo da avere un valore per riga, invece di utilizzare array JSON.

Trovo spesso domande su Stack Overflow sull'utilizzo di JSON in MySQL che mi convincono che questa funzionalità ha rovinato MySQL. Gli sviluppatori continuano a usarlo in modo inappropriato. A loro piace che semplifichi l'inserimento dati semistrutturati, ma scoprono che fa interrogare quei dati sono troppo complessi.