举个例子,两张表的连接查询,A表的AF字段=B表的BF字段,这两个字段在各自表中都可能为空,
希望的结果是如果两个字段同时为空,这个条件也成立
现在代码如下:
...
AND NVL(a.af, "-1") = NVL(b.bf, "-1")
...开发中一直用Oracle,但现在客户突然提出要兼容各种主流数据库。头疼不知道哪位前辈能帮帮我先谢过啦!

解决方案 »

  1.   


    谢谢LS的回答,不过貌似方向反了
    NVL就可以理解为Oracle自定义的函数,现在希望能把自定义函数恢复为各个数据库都通用的标准sql
      

  2.   

    本帖最后由 inthirties 于 2010-10-21 08:35:42 编辑
      

  3.   

    --用case when应该可以
    已写入 file afiedt.buf  1  select (case when comm is null then 0 else comm end) newcomm
      2* from emp
    SQL> /   NEWCOMM
    ----------
           900
           300
           500
           900
          1400
             0
             0
           900
             0
             0
           900   NEWCOMM
    ----------
             0
           900
             0
      

  4.   

    case只在select里面用过,请问如何在where字句里使用呢?
      

  5.   

    --NVL(a.af, "-1") = NVL(b.bf, "-1")你的改成下面的试试
    (case when a.af is null then -1 else comm end)
    =(case when a.af is null then -1 else comm end)
      

  6.   

    sql 92标准:
    .....
    AND (case when a.af is null then '-1' else a.af end)=(case when b.bf is null then '-1' else b.bf end)
    ....