Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL 5.7:converter JSON_ARRAY simples em linhas


Você pode fazer isso no MySQL 8.0 com JSON_TABLE() :
select r.res from mytable, 
 json_table(mytable.content, '$[*]' columns (res int path '$')) r 
where mytable.id = 1

Eu testei no MySQL 8.0.17, e esta é a saída:
+------+
| res  |
+------+
|    3 |
|    4 |
+------+

Se você usa uma versão anterior ao MySQL 8.0, você tem estas opções:
  • Encontre uma solução SQL incrivelmente complexa. Essa é quase sempre a maneira errada de resolver o problema, porque você acaba com um código muito caro para manter.
  • Busque a matriz JSON como está e exploda-a no código do aplicativo.
  • Normalize seus dados para que você tenha um valor por linha, em vez de usar matrizes JSON.

Muitas vezes encontro perguntas no Stack Overflow sobre o uso de JSON no MySQL que me convencem de que esse recurso arruinou o MySQL. Os desenvolvedores continuam usando-o de forma inadequada. Eles gostam que facilita a inserção dados semiestruturados, mas eles descobrem que isso torna a consulta esses dados muito complexos.