Buenas tardes a todos:

Tengo un problema con un registro en una tabla de tipo jsonb, estoy
tratando de cambiar el valor de un atributo a null pero me deja todo el
contenido en null y no solo el valor, les muestro un ejemplo primero de
como definir el atributo null:

prueba=# select jsonb_build_object('v', null);
 jsonb_build_object 
--------------------
 {"v": null}
(1 fila)

asi esta bien definido el objeto, luego al tratar de cambiar el valor
con jsonb_set con algún valor de tipo jsonb, lo hace de forma correcta:

prueba=# select jsonb_set('{"v" : 0}'::jsonb, '{"v"}', to_jsonb(1));
 jsonb_set 
-----------
 {"v": 1}
(1 fila)

pero si intento poner el valor de "v" en null al parecer hay conflicto:

prueba=# select jsonb_set('{"v" : 0}'::jsonb, '{"v"}', to_jsonb(null));
ERROR:  no se pudo determinar el tipo polimórfico porque el tipo de
entrada es «unknown»

o bien casteando el null como si fuera de tipo texto

prueba=# select jsonb_set('{"v" : 0}'::jsonb, '{"v"}',
to_jsonb(null::text));
 jsonb_set 
-----------
 
(1 fila)

deja todo el registro en null, cuando yo esperaría que lo dejara con el
valor: {"v": null}


Les agradezco su ayuda!!!!

Saludos!!!!

Reply via email to