+为表查询方式nvl用法:
nvl是专为处理null的函数。
NVL(字段,字段为空时显示的字符);
如果一个表table_name 中有字段 name ,
select nvl(name,'姓名为空') from table_name;
显示结果为:
张三
李四
姓名为空 (此时的字段是空值null)

解决方案 »

  1.   

    谢谢。但是如果写成
    select nvl(name,'姓名为空') from table_name where id=10;
    则返回no rows selected,而不是'姓名为空',为什么?
      

  2.   

    说明不存在name为空(and id=10)的纪录
      

  3.   

    还接这个问题。

    select name from table_name where id=10;
    没有结果时(no rows selected) , 显示'姓名为空',应该如何写呢?
      

  4.   

    樓主沒有符合條件的記錄應該沒得寫吧,當沒有此種記錄時,要它顯示做什麼呢?
      nvl應該明白了,高手多啊,+ 和 MS Server 中的Right Join 是一樣,表示是按照左邊的表還是右邊的表進行檢索.
      

  5.   

    没有记录也要有返回值啊,否则还要判断sqlcode。
    更重要的是这里举的例子只是一个大查询的一部分,如果返回no rows 则我整个查询都会没有结果。所以最后一个问题还是有现实意义的。
      

  6.   

    你可以在外层查询中判断是否exist(select...——你问题中的查询)
      

  7.   

    if  exist(select nvl(a.name,b.id) from tab1 a , tab2 b where a.id(+)=b.id and b.index='100';) then  
    else
      "无记录“
      

  8.   

    select name from table_name where id=10;
    这条语句关键在于ID=10的记录不存在,那么查询不会返回行。
    如果需要要求必须返回,那么要求这条记录存在,
    可以用(+)来使其出现这条记录的。