解决方案 »

  1.   

    select nvl(max(DNAME),'1') from DEPT t where t.DEPTNO=70
      

  2.   

    楼上正解,换种写法开拓下思路
    select DNAME from DEPT t where t.DEPTNO=70
    union all
    select '1' from dual
    where not exists(select 1 from DEPT t where t.DEPTNO=70)
      

  3.   


    --楼主假如是在过程中用的话可以用块状编程处理好未找到数据的异常,捕获到异常后赋予其特定值,例如:
    DECLARE
      v_dname VARCHAR2(100);
    BEGIN
      SELECT DNAME INTO v_dname FROM DEPT t WHERE t.DEPTNO=70;
    EXCEPTION
      WHEN no_data_found THEN
        v_dname := '未找到数据';
      WHEN OTHERS THEN
        v_dname := 'ERROR:' || SQLERRM;
    END;
      

  4.   

    select nvl(max(DNAME),'1') from DEPT t where t.DEPTNO=70

    1楼正解,看楼主的想法是若查找不到数据就将null转化成1之类的,简单方便,二楼的方法不太实用,三楼用块状编程是不是弄复杂了。
    另:
    nvl(字段,‘x’)字段值等于null就这个函数得到的结果就是'x',一般用于存在空值比较的情况下,比如字段a与字段b都是int型,其中一个等于null另一个为非空值,你使用a<>b是不成立的,使用此条件查询你将丢失这条本来不相等的数据,可以如此用法nvl(字段,-1)<>nvl(字段,-1),这样就可以得到想要查询的数据,当然查询数据的前提是此字段值不能有-1值才能用这种写法