应用系统适配瀚高报错:字段为numeric,但是表达式为varchar(APP)
文章目录
- 环境
- 症状
- 问题原因
- 解决方案
环境
系统平台:
版本:4.5
症状
应用系统适配瀚高报错:字段为numeric,但是表达式为varchar
问题原因
在瀚高数据库中空字符串和NULL不是等价的,所以当向numeric类型的字段中存入空字符串时,会引发错误。
解决方案
由瀚高工程师编写瀚高数据库自定义转换函数,将空字符串“”转为NULL解决:
create or replace function varchar_to_numeric(varchar) returns numericas $$select nullif($1::text,'')::numeric ;$$ language sql strict;create cast(varchar as numeric) with function varchar_to_numeric(varchar) as implicit;