sql >> Base de Datos >  >> RDS >> Mysql

MySQL 5.7:convierte JSON_ARRAY simple en filas

Puede hacer esto en MySQL 8.0 con JSON_TABLE() :

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

Probé en MySQL 8.0.17 y este es el resultado:

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

Si usa una versión anterior a MySQL 8.0, tiene estas opciones:

  • Encuentre alguna solución SQL increíblemente compleja. Esta es casi siempre la forma incorrecta de resolver el problema, porque termina con un código que es demasiado costoso de mantener.
  • Obtenga la matriz JSON tal cual y explótela en el código de la aplicación.
  • Normalice sus datos para que tenga un valor por fila, en lugar de usar matrices JSON.

A menudo encuentro preguntas en Stack Overflow sobre el uso de JSON en MySQL que me convencen de que esta característica ha arruinado MySQL. Los desarrolladores siguen usándolo de manera inapropiada. Les gusta que sea fácil de insertar datos semiestructurados, pero descubren que hace consultar esos datos son demasiado complejos.