2016-11-21 3 views
0

У меня есть столбец metadata, который имеет формат TEXT, но содержит материал, который обычно является JSON. Я хочу выбрать в нем определенное значение (например, metadata :: JSON -> 'register' ->> 'date'), но если JSON плохо отформатирован или если это поле не существует, я получаю сообщение об ошибке. Могу ли я сделать, чтобы этот столбец возвращал значение NULL, когда он получил ошибку?Catch Значение столбца исключения и изменения PostgreSQL

ответ

1

Вы можете написать хранимую процедуру, которая пытается передать в 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'.

Смежные вопросы