将select的结果insert到另外一张表。
用了如下句型:
insert into t
select a.* left join b...
但是有个字段为number,并且不能为空。但是a left join b以后得出来的结果有的为null那肯定插入t失败。
我想让他变成数字0,请问有什么办法。
谢谢大家。

解决方案 »

  1.   

    示例
    insert into t
    select a.col1,a.col2...isnull(a.colN,0)... 
    from a left join b on...
      

  2.   

    函数
    NVL(字段,0)
    如果字段为null值,自动填充为0。
      

  3.   

    --使用nvl函数再嵌个子查询,例:
    INSERT INTO tab
      (id, b1, a1)
      SELECT id, nvl(b1, 0), nvl(a1, '默认值')
        FROM (SELECT a.id, b.b1, a.a1 FROM a LEFT JOIN b ON a.id = b.id)
      

  4.   

    decode,我比较喜欢用,decode(字段,null,0,字段)
      

  5.   

    isnull  decode   nvl   coalesce 多种函数可以解决你的问题
      

  6.   

    --使用nvl函数再嵌个子查询,例:
    INSERT INTO tab
      (id, b1, a1)
      SELECT id, nvl(b1, 0), nvl(a1, '默认值')
        FROM (SELECT a.id, b.b1, a.a1 FROM a LEFT JOIN b ON a.id = b.id)
      

  7.   

    用nvl函数,用法如下:
    select nvl(目标列,要是为null在此写出默认值) from dual;