select decode(nvl(adress.adr1,'null'),'null',adress.adr2,adress.adr1 || ' ' || adress.adr2) from adress where rownum < 10;

解决方案 »

  1.   

    bzszp(SongZip) , 太感谢你了,但是现在如果是要判断adr1,和adr2 这两个字段,然后又一个adr3的话,应该怎么写呀? 我刚才试着写了一下,但是怎么都写不对,再帮帮我吧!
      

  2.   

    select decode(nvl(adress.adr1,'null'),'null',decode(address.adr2,null)...
    如此嵌套,做吧或者,试试SELECT 语句中嵌IF THEN来实现
    ,SELECT XXX
                IF 
                THEN
               FROM 
      

  3.   

    一句即可select nvl(adress.adr1,'')||nvl(adress.adr2,'')||nvl(adress.adr3,'')...
    from adress where rownum < 10;
      

  4.   

    用以楼上的方法:
    select nvl(address.adr1,'')||nvl(address.adr2,'')||nvl(address,adr3,'')||...
    from address where rownum<10
      

  5.   

    但是rownum对于显示有一定的限制,它是按照进入到数据库重的顺序来显示的。
    select * from a where rownum<10 order by id;
    这是不起作用的。
    select * from (select * from a order by id) a where rownum<10.
      

  6.   

    写一个函数addstring(s1,s2),如果s1为空返回s2,如果s2为空返回s1,否则返回s1||' '||s2,
    create or replace function addstring(s1 varchar2,s2 varchar2) return varchar2
    as
    begin
      if s1 is null then
        return s2;
      elsif s2 is null then
        return s1;
      else
        return s1||' '||s2
      end if;
    end;
    /select addstring(addstring(adr1,adr2),adr3) from ....