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