我有一个名为metadata
的列,它的格式是TEXT
,但通常包含JSON格式的内容。我想在其中选择某个值(例如metadata :: JSON -> 'register' ->> 'date'
),但如果JSON格式不正确或者该字段不存在,就会出现错误。我能否使该列在遇到错误时返回一个NULL
值?
我有一个名为metadata
的列,它的格式是TEXT
,但通常包含JSON格式的内容。我想在其中选择某个值(例如metadata :: JSON -> 'register' ->> 'date'
),但如果JSON格式不正确或者该字段不存在,就会出现错误。我能否使该列在遇到错误时返回一个NULL
值?
您可以编写一个存储过程,试图将数据转换为json格式,如果转换失败则返回null。例如:
create function to_json(t text) returns json as $$
begin
return t::json;
exception when invalid_text_representation then
return null;
end;
$$ language plpgsql;
然后使用 to_json(metadata) -> 'register' ->> 'date'
。