应用系统适配瀚高报错:字段为numeric,但是表达式为varchar

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用系统适配瀚高报错:字段为numeric,但是表达式为varchar相关的知识,希望对你有一定的参考价值。

瀚高数据库
目录
环境
症状
问题原因
解决方案
报错编码
环境
系统平台:IBM:Linux on System z Red Hat Enterprise Linux 4
版本: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;

报错编码
字段为numeric,但是表达式为varchar

以上是关于应用系统适配瀚高报错:字段为numeric,但是表达式为varchar的主要内容,如果未能解决你的问题,请参考以下文章

应用系统适配瀚高报错:字段为numeric,但是表达式为varchar

查询字段类型为numeric时,where条件与‘ ’对比报错

瀚高数据库数据类型转换character转numeric

瀚高数据库数据类型转换character转numeric

使用瀚高数据库hibernate方言报错

使用瀚高数据库hibernate方言报错