处理函数中整数字段的NULL值

时间:2019-09-30 15:50:39

标签: sql postgresql postgresql-9.1

我创建了一个函数来插入/更新表中的记录。 数据作为参数传递给函数。 在处理Integer / float / double字段时面临问题。例如, 我已经将Empno字段声明为Int(根据目标表结构)。 因此,我认为当一个空值到来时,我会使用强制转换功能将其转换为“ 0”。 但是自从声明为Int以来,它甚至不接受NULL值。 我应该将声明更改为varchar然后进行转换吗? 我该怎么办 ?请帮助

我得到的错误是运算符不存在:文本整数42883

示例代码:

create function test (text[])  
declare  
companycode varchar(4);  
empno varchar(10);  
begin  
L_1 := $1[1];  
L_2 :=cast(NULLIF($1[2],0) as int);  
update and insert statement ...  
end;  

1 个答案:

答案 0 :(得分:1)

NULLIF()将指定的值更改为NULL,反之亦然。改用IFNULL()COALESCE()

还将操作顺序首先更改为CAST,如下所示:

COALESCE($1[2]::int, 0)