0
我有一个名为metadata
的列,其格式为TEXT
,但包含通常为JSON的东西。我想选择一个特定的值(例如metadata :: JSON -> 'register' ->> 'date'
),但如果JSON格式不正确或者该字段不存在,则会出现错误。我可以让该列返回一个NULL
的值,当它会得到一个错误吗?捕获PostgreSQL异常并更改列值
我有一个名为metadata
的列,其格式为TEXT
,但包含通常为JSON的东西。我想选择一个特定的值(例如metadata :: JSON -> 'register' ->> 'date'
),但如果JSON格式不正确或者该字段不存在,则会出现错误。我可以让该列返回一个NULL
的值,当它会得到一个错误吗?捕获PostgreSQL异常并更改列值
你可以编写一个试图转换为json的存储过程,并返回失败的空值。类似这样的:
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'
。