Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

198
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!