捕获PostgreSQL异常并更改列值

时间:2016-11-21 14:47:23

标签: json postgresql exception-handling

我有一个名为metadata的列,其格式为TEXT,但包含通常为JSON的内容。我想在其中选择一个特定值(例如metadata :: JSON -> 'register' ->> 'date'),但如果JSON格式错误或者字段不存在,我会收到错误。我可以使该列只返回一个NULL值,而不会产生错误吗?

1 个答案:

答案 0 :(得分:3)

您可以编写一个尝试转换为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'