【问题标题】:Handle NULL values for integer field in a function处理函数中整数字段的 NULL 值
【发布时间】:2020-01-29 22:46:57
【问题描述】:

我创建了一个在表中插入/更新记录的函数。 数据作为参数传递给函数。 在处理整数/浮点数/双字段时面临问题。例如, 我已将 Empno 字段声明为 Int(根据目标表结构)。 所以我想当一个空值出现时,我使用强制转换函数转换为“0”。 但它甚至不接受 NULL 值,因为它被声明为 Int。 我应该将声明更改为 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;  

【问题讨论】:

  • 您好,能否请您发布您编写的函数的代码?
  • 强制转换不会将 NULL 转换为零。
  • 已更新示例代码

标签: sql postgresql postgresql-9.1


【解决方案1】:

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

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

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

【讨论】:

  • 您好,Usagi,感谢您的支持。我尝试了您对另一个浮点字段的建议(将 int 替换为 float(8)),但是当我尝试插入时出现另一个错误:column is of double precision but expression is of type character varying 有什么建议吗?
  • 嘿Usagi,我设法解决了这个问题。感谢您的及时回复!
猜你喜欢
  • 1970-01-01
  • 2015-08-19
  • 2022-01-25
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多