sql - 为什么我会收到 "[SQL0802] Data conversion of data mapping error"异常?

标签 sql ibm-midrange data-conversion

我对 iseries/DB2 不太熟悉。但是,我在一个使用它作为主要数据库的网站上工作。

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

Type: S
Length: 9
Dec: 2

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

当我使用简单的 SELECT (SELECT MYCOL FROM MYTABLE) 查询数据时,我可以毫无问题地取回所有记录。但是,当我尝试在同一列上使用 DISTINCTGROUP BYORDER BY 时,出现以下异常:

[SQL0802] Data conversion of data mapping error

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

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

最佳答案

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

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

修复此问题的最简单方法是编写 HLL 程序(RPG)来读取文件并更正记录。

关于sql - 为什么我会收到 "[SQL0802] Data conversion of data mapping error"异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075585/

相关文章:

mysql - Sql count 返回错误的数字

sql - "<>"在 Oracle 中是什么意思

javascript - 火狐浏览器 JavaScript 兼容性

java - 在 AS400 上通过 Java 传输运行时进程执行 (cobol obj) 的结果时出现 MalformedInputException

ibm-midrange - AS400基本问题

javascript - 将 Date() 转换为 IsoString 未显示正确的 hh :mm:ss

sql - 查找两个时间范围之间的日期差距

sql - 如何防止 SQL Server 返回 3 组结果?

python - 使用 python 将 txt 文件的每一行和部分部分读取到 csv 文件中

c++ - 涉及转换函数的棘手情况?