select nvl2(field1 and field2,'Y','N') from tablename where c;
nvl2只适用于oracle9i

解决方案 »

  1.   

    select decode((field1||field2),null,'Y','N')
    from tablename where c
      

  2.   

    在ORACLE8.1.7以后我们可以使用CASE WHEN语句来实现IF/THEN语句的功能
    SELECT CASE WHEN field1 is null and field2 is null THEN ‘Y’
                ELSE ‘N’END 
    FROM tablename where c;
    楼主的问题甚至可以采用可以采用更简单的方法来解决:
    SELECT NVL2(FIELD1||FIELD2,‘Y’,‘N’) FROM tablename where c;
    NVL2(EXPR,VAL1,VAL2)函数的作用是当EXPR为空时,返回VAL1,否则返回VAL2
    当然FIELD1||FIELD2 IS NULL 等价于 FIELD1 IS NULL AND FIELD2 IS NULL
    ORACLE中好象逻辑变量好象不能直接与TRUE和FALSE进行比较吧。
      

  3.   

    如果Field1 is null, and field2 is null, 返回的值是'y',否则,返回'N',
    伪码为:select decode ( field1 , null , decode ( field2 , null , 'y','n') , 'n')
    from tablename