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

Handle NULL values for integer field in a function

我创建了一个函数来 insert/update 在 table 中记录。 数据作为参数传递给函数。 在处理 Integer/float/double 字段时遇到问题。例如, 我已将 Empno 字段声明为 Int(根据目标 table 结构)。 所以我想当空值出现时,我使用转换函数将其转换为“0”。 但它甚至不接受 NULL 值,因为它被声明为 Int。 我应该将声明更改为 varchar 然后再转换吗? 我应该怎么办 ?请帮忙

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

示例代码:

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

NULLIF() 将指定值更改为 NULL,而不是相反。请改用 IFNULL()COALESCE()

同时将操作的顺序改为先CAST,像这样:

COALESCE([2]::int, 0)