SQL JSON

Extraer información de JSON almacenado en campo SQL:

SELECT id,JSON_EXTRACT(valor,'$.periode') AS periode
FROM treballadors_registrejornada
WHERE periode = "01-2020"
SELECT id FROM treballadors_registrejornada 
WHERE valor->>'$.periode' = '01-2020';

["01-2020", "02-2020", "03-2020"]
-- Extrae el primer elemento de la lista
SELECT id, JSON_EXTRACT(valor, '$[0]') AS primer_periodo 
FROM treballadors_registrejornada;
-- Devuelve solo las filas donde "01-2020" esté dentro de la lista
SELECT id FROM treballadors_registrejornada 
WHERE JSON_CONTAINS(valor, '"01-2020"');
-- Eliminar un elemento por su posición
SELECT id, JSON_LENGTH(valor) AS total_periodos 
FROM treballadors_registrejornada;
-- Eliminar un elemento por su posición
UPDATE treballadors_registrejornada 
SET valor = JSON_ARRAY_APPEND(valor, '$', '04-2020') WHERE id = 1;
-- nsertar en una posición específica (ej. en la posición 1)
SET valor = JSON_ARRAY_INSERT(valor, '$[1]', '01-2021')
-- Eliminar un elemento por su posición
SET valor = JSON_REMOVE(valor, '$[0]') -- Borra el primer elemento
-- De Lista JSON a Filas SQL
SELECT t.id, j.periode
FROM treballadors_registrejornada t
CROSS JOIN JSON_TABLE(
    t.valor,
    '$[*]' COLUMNS (
        periode VARCHAR(20) PATH '$'
    )
) AS j
WHERE j.periode = "01-2020";
  • bbdd/sql/json.txt
  • Darrera modificació: 10/07/2026 13:22
  • per mate