如何从 Db2 中的小数字段中获取无效值列表?
How do you get a list of invalid values from a decimal field in Db2?
我对非空小数字段中具有空值的列有疑问。当使用该列时(如在 case 语句中)会出现问题,但当我只是执行 select * from.
时不会出现问题
出现的错误是 SQL0802 类型 6 - 数字数据无效。我能够找到其中的一些并修复它,但我想从这个非常大的 table.
中获得所有这些的列表
但同样,每当我使用它时,它都会给我错误。这是我一直在尝试的主要内容:
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 中的空值列表?
问题不在于值为 null,如果是这样,那么
SELECT *
FROM mytable
WHERE badcol IS NULL
会起作用。问题是字段中的数据不是数字。
如果您的系统保持最新,那么恭喜! IBM 在 7.3 和 7.4 的最新 TR 中添加了一些 validation utilities。
否则请尝试以下操作(对于 2 位分区号码):
select *
from mytable
where substr(hex(badcol),1,1) not in ('F','D')
or substr(hex(badcol),2,1) not between '0' and '9'
or substr(hex(badcol),3,1) not in ('F','D')
or substr(hex(badcol),4,1) not between '0' and '9'
我对非空小数字段中具有空值的列有疑问。当使用该列时(如在 case 语句中)会出现问题,但当我只是执行 select * from.
时不会出现问题出现的错误是 SQL0802 类型 6 - 数字数据无效。我能够找到其中的一些并修复它,但我想从这个非常大的 table.
中获得所有这些的列表但同样,每当我使用它时,它都会给我错误。这是我一直在尝试的主要内容:
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 中的空值列表?
问题不在于值为 null,如果是这样,那么
SELECT *
FROM mytable
WHERE badcol IS NULL
会起作用。问题是字段中的数据不是数字。
如果您的系统保持最新,那么恭喜! IBM 在 7.3 和 7.4 的最新 TR 中添加了一些 validation utilities。
否则请尝试以下操作(对于 2 位分区号码):
select *
from mytable
where substr(hex(badcol),1,1) not in ('F','D')
or substr(hex(badcol),2,1) not between '0' and '9'
or substr(hex(badcol),3,1) not in ('F','D')
or substr(hex(badcol),4,1) not between '0' and '9'