处理函数中整数字段的 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)
我创建了一个函数来 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)