= SQL JSON == diccionario 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'; {{ :bbdd:sql:pasted:20230109-025759.png }} * https://noticiasseguridad.com/seguridad-informatica/los-nuevos-ataques-de-inyeccion-sql-basados-en-json-permiten-eludir-waf-de-palo-alto-f5-aws-cloudflare-e-imperva/ * https://dev.mysql.com/doc/refman/8.0/en/json-functions.html == lista ["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";