捕获PostgreSQL异常并更改列值

3

我有一个名为metadata的列,它的格式是TEXT,但通常包含JSON格式的内容。我想在其中选择某个值(例如metadata :: JSON -> 'register' ->> 'date'),但如果JSON格式不正确或者该字段不存在,就会出现错误。我能否使该列在遇到错误时返回一个NULL值?

1个回答

5
您可以编写一个存储过程,试图将数据转换为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'


运行正常,但我建议避免创建与已有的 PostgreSQL 内置函数同名的函数。https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE - Patrick Refondini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接