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.