为什么我得到“数据映射错误的[SQL0802]数据转换”异常?

前端之家收集整理的这篇文章主要介绍了为什么我得到“数据映射错误的[SQL0802]数据转换”异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对iseries / DB2不太熟悉.但是,我在一个使用它作为主数据库的网站上工作.

最近在现有表中添加了一个新列.当我通过AS400查看它时,我看到以下数据类型:

Type: S
Length: 9
Dec: 2

这告诉我这是一个数字字段,小数点前有6位数字,小数点后2位数字.

当我使用简单的SELECT(SELECT MYCOL FROM MYTABLE)查询数据时,我会毫无问题地收回所有记录.但是,当我尝试在同一列上使用DISTINCT,GROUP BY或ORDER BY时,我得到以下异常:

[sql0802] Data conversion of data mapping error

我推断至少有一条记录有无效数据 – 我的DBA称之为“空白”或“4 O”.这怎么可能呢?当尝试将无效数据添加到该列时,数据库是否应该抛出异常?

有什么方法可以解决这个问题,例如在我的查询中过滤掉那些不良记录吗?

解决方法

“4 O”表示0x40,它是空格或空白字符的EBCDIC代码,是放入记录中任何新空间的默认值.

传统程序/操作可能会引入十进制数据错误.例如,如果使用带有FMTOPT(* NOCHK)选项的CPYF命令创建并填充新文件.

解决它的最简单方法是编写HLL程序(RPG)来读取文件并更正记录.

猜你在找的MsSQL相关文章