PostgreSQL to_number无效的输入类型语法语法:“”

时间:2018-08-14 03:23:26

标签: sql postgresql

我在我的Postgresql函数中使用to_number

v_t_to=to_number((select cast(json_extract_path(objjson,'t_to') as text)),'9999999999999999.99');

但是当“ t_to”为“”或“ t_to”为空时,错误为Invalid input type syntax syntax: ""

我需要将v_t_to保存到我的表中,该列可能为空,所以我该怎么办?

json喜欢这个:

"reach_condition_array":[
        {
            "up_s_line_no":1,
            "t_from":20.1,
            "t_to":30.1,
            "rebate":11
        },
        {
            "up_s_line_no":2,
            "t_from":30.1,
            "t_to":null,
            "rebate":22.5
        },
        {
            "up_s_line_no":3,
            "t_from":40.6,
            "t_to":"",
            "rebate":30
        }
    ]

如何解决?

1 个答案:

答案 0 :(得分:0)

Luarenz Albe所述,您可以使用CASE

另一种解决方案是,如果字符串为空,则首先使用NULLIF来获取NULL,然后使用COALESCE来获取默认值(在我的示例中,0下)(如果值为NULL

v_t_to=to_number((select COALESCE(NULLIF(cast(json_extract_path(objjson,'t_to') as text), ''), '0')),'9999999999999999.99');