【发布时间】:2020-05-29 15:15:04
【问题描述】:
我对在非空十进制字段中具有空值的列有疑问。使用该列时会出现问题(例如在 case 语句中),但不是在我简单地执行 select * from 时。
它出现的错误是 SQL0802 类型 6 - 无效的数字数据。我能够找到其中一些并修复它,但我想从这个非常大的表中获取所有这些的列表。
但同样,每当我使用它时,它都会给我错误。这是我一直在尝试的主要内容:
SELECT *
FROM (
SELECT keycol_1, keycol_2,
IFNULL(badcol, -1) AS badcol_tmp
FROM mytable
) WHERE badcol_tmp = -1
(请注意,该列不应包含负数,这就是我在那里使用 -1 的原因)。这给出了上面列出的错误。
我也试过
SELECT *
FROM mytable
WHERE badcol IS NULL
这没有给我任何结果...没有错误,但没有行。但是我已经看到它在滚动所有数据时是空的。
如何获取 badcol 中的空值列表?
【问题讨论】:
-
@mao 它是 DDS,而不是 DDL。它是 2S 0。它不能为空,因为它实际上是密钥的一部分。您能否详细说明“但是您如何确定运行的查询?”我所做的只是“SELECT * FROM mytable”并滚动了很多,直到找到一个空值。平台是 i 系列。我不知道版本/补丁包,也不知道如何找到它(我不是系统管理员)
-
@TheLittlePeace:请向我们展示引发您遇到的错误的片段或代码。
-
@GMB 根据公司政策,我不允许提供更多详细信息,例如实际列名或实时代码。但是我问题中的第一个代码位会引发错误。最后,问题不在于错误,我想知道如何查看所有不应该出现空值的行,因此我可以通过使它们有效来修复错误。
-
您如何确定它是 NULL,您的意思是空格或其他字符,或者对于这些值在您的显示器上看不到任何字符?
-
以十六进制模式查看它也可以确定差异。
标签: sql null db2 ibm-midrange db2-400