Saltar al contenido

Cómo contar setof / número de keys de JSON en postgresql?

Luego de consultar expertos en esta materia, programadores de diversas áreas y maestros dimos con la respuesta al problema y la dejamos plasmada en este post.

Solución:

Más corto:

SELECT count(*) FROM jsonb_object_keys('"a": 1, "b": 2, "c": 3'::jsonb);

Devoluciones 3

Si quieres todos los números json de keys de una tabla, da:

SELECT (SELECT COUNT(*) FROM json_object_keys(myJsonField)) nbr_keys FROM myTable;

podrías convertir keys para array y usa array_length para obtener esto:

select array_length(array_agg(A.key), 1) from (
    select json_object_keys('"f1":"abc","f2":"f3":"a", "f4":"b"') as key
) A;

Si necesita obtener esto para toda la tabla, puede agrupar por principal key.

Si bien se debe usar una subselección para convertir el JSON keys establecida en filas, la siguiente consulta modificada podría ejecutarse más rápido al omitir la creación de la temporal array:

SELECT count(*) FROM
   (SELECT jsonb_object_keys('"a": 1, "b": 2, "c": 3'::jsonb)) v;

y es un poco mas corto 😉

Para convertirlo en una función:

CREATE OR REPLACE FUNCTION public.count_jsonb_keys(j jsonb)
  RETURNS bigint
  LANGUAGE sql
AS $function$
SELECT count(*) from (SELECT jsonb_object_keys(j)) v;
$function$

valoraciones y comentarios

Nos puedes añadir valor a nuestro contenido asistiendo con tu veteranía en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *