我们有不同的表格,这些表格在各个字段中意外填充,其中包含空值,这些表格在尝试显示时会导致问题。
我知道如何逐列替换它们,但我想知道是否有一种简单的方法来替换所有列中的所有空值。我没有提出任何可能的解决方案。
计算30个表,平均约80列,这需要一段时间来创建SQL。
有关如何简化此任务的任何建议吗? 我们使用DB2 V9,以防它有一个函数或类似的
提前致谢
Xavjer
答案 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。