Saltar al contenido

¿Cómo verifico si un json key existe en Postgres?

Siéntete en la libertad de compartir nuestros post y códigos en tus redes, danos de tu ayuda para hacer crecer nuestra comunidad.

Solución:

También puede utilizar el ‘?’ operador así:

SELECT '"key_a":1'::jsonb ? 'key_a'

Y si necesita consultar por anidado keyusa así:

SELECT '"key_a": "nested_key": "a"'::jsonb -> 'key_a' ? 'nested_key' 

Ver http://www.postgresql.org/docs/9.5/static/funciones-json.html

NOTA: Solo para jsonb escribe.

Su función hace exactamente lo contrario de lo que es el nombre, pero la forma de arreglar su función es agregar ( y ) alrededor de some_json->outer_key.

Aquí está en pleno funcionamiento y coincide con el nombre de su función (observe el NOT en frente de NULL).

CREATE FUNCTION key_exists(some_json json, outer_key text)
RETURNS boolean AS $$
BEGIN
    RETURN (some_json->outer_key) IS NOT NULL;
END;
$$ LANGUAGE plpgsql;

Algunas pruebas:

select key_exists('"key_a": "nested_key": "a", "key_b": "nested_key": "b"'::json, 'key_a');
 key_exists 
------------
 t
(1 row)

Y aquí cuando un key no existe:

select key_exists('"key_a": "nested_key": "a", "key_b": "nested_key": "b"'::json, 'test');
 key_exists 
------------
 f
(1 row)

Verificar key existe o no, puede usar el operador -> esto se usa para obtener el campo de objeto Obtener JSON por key
Por ejemplo:

actual json data in column(attribute): 
    "active": "t",
    "email_address": "[email protected]",
    "pin": "2233"


SELECT attributes::json->'email_address'
FROM entity
WHERE entity_id = 55;

También puedes buscar key a través del operador #> y #>>

Obtenga el campo del objeto JSON como texto: ‘”a”:1,”b”:2′::json->>’b’ usando el operador ->>

Puedes proteger nuestro ensayo ejecutando un comentario y puntuándolo te estamos agradecidos.

¡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 *