2016-11-21 58 views
0

我有一个名为metadata的列,其格式为TEXT,但包含通常为JSON的东西。我想选择一个特定的值(例如metadata :: JSON -> 'register' ->> 'date'),但如果JSON格式不正确或者该字段不存在,则会出现错误。我可以让该列返回一个NULL的值,当它会得到一个错误吗?捕获PostgreSQL异常并更改列值

回答

1

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