select decode(c2,null,c1,c2) from t

解决方案 »

  1.   


    select decode(c2,null,c1,c2) from tc1和c2是值,不是字段名
      

  2.   


    select decode(c2,null,c1,c2) from tc1和c2是值,不是字段名
    c2行和C1行如何理解,举出数据和你想要的结果
      

  3.   


    select decode(c2,null,c1,c2) from tc1和c2是值,不是字段名
    c2行和C1行如何理解,举出数据和你想要的结果举例:我想要select * from a where c=c2 or c=c1 ,如果c=c2成立,就不要再执行后边的 or c=c1了(实际上这是不可能的,or c=c1还会继续执行的),怎么写能实现类似的效果?
      

  4.   


    select decode(c2,null,c1,c2) from tc1和c2是值,不是字段名
    c2行和C1行如何理解,举出数据和你想要的结果举例:我想要select * from a where c=c2 or c=c1 ,如果c=c2成立,就不要再执行后边的 or c=c1了(实际上这是不可能的,or c=c1还会继续执行的),怎么写能实现类似的效果?
    select * from a where (c=c2 or c=c1 )
    就这样就行了,当判断OR(或)的表达式的时候,如果第一个表达式就不会再执行第二个表达式了
      

  5.   


    select decode(c2,null,c1,c2) from tc1和c2是值,不是字段名
    c2行和C1行如何理解,举出数据和你想要的结果举例:我想要select * from a where c=c2 or c=c1 ,如果c=c2成立,就不要再执行后边的 or c=c1了(实际上这是不可能的,or c=c1还会继续执行的),怎么写能实现类似的效果?
    select * from a where (c=c2 or c=c1 )
    就这样就行了,当判断OR(或)的表达式的时候,如果第一个表达式就不会再执行第二个表达式了好像不是这样啊试了,感觉跟不加括号一样
      

  6.   

    这帮人,太不靠谱了。字段是C,值是C1 C2select * from t
    where C=decode(C,'C2','C2','C1')
      

  7.   

    SELECT *, 
    CASE WHEN C = C1 THEN (C1) 
         WHEN C = C2 THEN (C2) 
    ELSE (C1)
    END C
    FROM A
      

  8.   

    SELECT *
    FROM A
    WHEN C=(CASE WHEN C=C1 THEN C1 ELSE C2 END)
      

  9.   

    SELECT *
    FROM A
    WHEN C='C1' OR C='C2'
      

  10.   


    SQL> select * from test;USERNAME                                             USERNUM
    -------------------- ---------------------------------------
    c1                   
    c2                   
                                                               1SQL> select decode(username,null,'c1','c2','c2','c1','c1'),usernum from test;DECODE(USERNAME,NULL,'C1','C2'                                 USERNUM
    ------------------------------ ---------------------------------------
    c1                             
    c2                             
    c1                                                                   1
      

  11.   

    看看这个呢 
    select * from t where c=(case when (select count(*) from t where c='c2')>0 then 'c2'  else 'c1' end);
      

  12.   

    你的意思不太清晰啊,是否这样:
    c列值同时包含c1,c2时,只要c2部分?
    那要先判断是否同时包含c1,c2记录。用个参数吧,或者子查询。
    where c=case when (select count(distinct c) from t 
    where c=c1 or c=c2)=2 then c2 
    else (select distinct c from t 
    where c=c1 or c=c2) end