Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
leer matriz json en consulta mysql

Conozco la posibilidad de duplicidad de preguntas, pero no encontré nada que me ayude en mi situación al respecto.

Tengo este json en mi columna mysql:

 [ { "ddi": "55", "routing_id": "7", "price": { "mt": 0.0285, "mo": 0.0285 } }, { "ddi": "598", "routing_id": "10", "price": { "mt": 0.06, "mo": 0.06 } } ]

Cuando hago la siguiente consulta:

 SELECT JSON_EXTRACT(my_column,'$[*].ddi') as ddi FROM my_table

obtengo el resultado:

 ["55", "598"]

Mi pregunta es: ¿hay alguna forma de devolver estos datos en filas en lugar de una matriz json? Me gusta:

 Ddi 55 598
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puedes usar JSON_TABLE para lo mismo

 SELECT get_ddi.* FROM my_table, JSON_TABLE(my_column, '$[*]' COLUMNS ( my_column VARCHAR(40) PATH '$.ddi') ) get_ddi;
 **Schema (MySQL v8.0)** DROP TABLE IF EXISTS `my_table`; CREATE TABLE IF NOT EXISTS `my_table` ( `id` SERIAL, `my_column` JSON ); INSERT INTO `my_table` (`id`, `my_column`) VALUES (1, '[ { "ddi": "55", "routing_id": "7", "price": { "mt": 0.0285, "mo": 0.0285 } }, { "ddi": "598", "routing_id": "10", "price": { "mt": 0.06, "mo": 0.06 } } ]'); **Query #1** SELECT get_ddi.* FROM my_table, JSON_TABLE(my_column, '$[*]' COLUMNS ( my_column VARCHAR(40) PATH '$.ddi') ) get_ddi; **Output** | my_column | | --------- | | 55 | | 598 |

Según los comentarios de @Guilherme Mascarenhas a continuación, la solución necesaria era para MariaDb. A partir de la versión 10.2.31, la función JSON_TABLE no existe para MariaDB. Una solución hacky podría ser usar la tabla de secuencia mariadb apropiada (dependiendo de la cantidad de filas). JSON_UNQUOTE elimina la cita del valor extraído. seq se usa como índice para obtener el valor ddi especificado de la matriz.

 SELECT JSON_UNQUOTE(JSON_EXTRACT(t.my_column, CONCAT('$[', seq_0_to_100.seq, '].ddi'))) AS getddi FROM my_table t JOIN seq_0_to_100 HAVING getddi IS NOT NULL; **Output** | my_column | | --------- | | 55 | | 598 |
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda