寻找nvl置0的替代方法
有表
a b c
1 2
5 5 2
2 1
1 4
想把空值全部设置为0,oracle中nvl函数可以实现,但是一个字段一个字段进行,我若有很多字段就显得很不方便,高手有什么方法,批量实现吗?
------解决方案--------------------decode
------解决方案--------------------decode
------解决方案--------------------必须一个个字段进行,
update xxx set a=nvl(a,0), b=nvl(b,0), c=nvl(c,0)
------解决方案--------------------前两个人根本就没理解提问人的意思。
这个可以用过程实现,但执行效率是很低的,该写的就写吧。
假设表名叫table1
sqlstr:= 'select column_name from user_table_columns where table_name= ' 'table1 ' ' ';
open col_cur for sqlstr;
loop
fetch col_cur into v_colname;
exit when col_cur%notfound;
sqlstr:= 'update table1 set '||v_colname|| '=nvl( '||v_colname|| ',0) where ... ';
execute immediate sqlstr;
end loop
close col_cur;