检查值是否可以作为postgres中的间隔进行类型转换

时间:2016-04-21 16:42:36

标签: sql postgresql

我有一个用户定义的值,输入到postgres数据库中。如果输入的值正确,则应该可以将其转换为间隔,但是,某些值可能输入错误,这将导致异常。

有没有办法检查某个值是否可以作为间隔进行转换?以下内容:

CASE
    WHEN my_interval [can be cast as interval] THEN my_interval::interval
    ELSE NULL
END as my_valid_interval

1 个答案:

答案 0 :(得分:4)

生成valid interval input的格式种类繁多。因此,简单的答案是你不能简单地检查一些字符串是否是有效的间隔。

可能最直接的解决方案是使用PL / pgSQL函数将字符串转换为interval并在任何错误上返回null:

CREATE FUNCTION string_to_interval(s text) RETURNS interval AS $$
BEGIN
    RETURN s::interval;
EXCEPTION WHEN OTHERS THEN
    RETURN NULL;
END; $$ LANGUAGE plpgsql STRICT;

使用它像:

SELECT string_to_interval(my_interval) AS my_valid_interval
FROM ...