用DB2简单地替换Null值

时间:2014-01-29 11:47:16

标签: replace null db2

我们有不同的表格,这些表格在各个字段中意外填充,其中包含空值,这些表格在尝试显示时会导致问题。

我知道如何逐列替换它们,但我想知道是否有一种简单的方法来替换所有列中的所有空值。我没有提出任何可能的解决方案。

计算30个表,平均约80列,这需要一段时间来创建SQL。

有关如何简化此任务的任何建议吗? 我们使用DB2 V9,以防它有一个函数或类似的

提前致谢

Xavjer

2 个答案:

答案 0 :(得分:0)

您可以使用目录表从要修改的列中获取名称(如果需要,可以全部使用)

select 'update ' || trim(tabschema) || '.' || trim(tabname) 
  || ' set ' || trim(colname) || ' = '' '''
  || ' where ' || trim(colname) || ' is NULL;'
from syscat.columns
where tabschema not like 'SYS%'
  and XXX YYYY ;

(未经测试,但它应该是这样的)

此查询将生成一组您将执行(复制/粘贴)或您将其放入文件然后

的行
db2 -tvf file.sql | db2 +p -tv

最后一个条件是您自己过滤目录的条件。如果要筛选更多条件,可以使用syscat.tables视图。

答案 1 :(得分:0)

我不熟悉db2 luw工具,但您应该能够从现有表中生成至少一个create table脚本。只需稍微查找和替换魔法,您就可以将create更改为包含not null with default子句的alter table。