select *  from tbl
where (c1 ='A' and c2='B' and c is null)
or (c1='B' and c2='A' and c is null)

解决方案 »

  1.   

    welyngj好快  ^_^在 welyngj的方法后加几个 OR 就行
      

  2.   

    如果你的A和B是参数给进来的,可将'A'和'B'换成参数.可试试下面的这句
    select * from ttt 
    where length(c1||c2||c3)=2 and instr(c1||c2||c3,'A')>0 and instr(c1||c2||c3,'B')>0
      

  3.   

    select * from ttt 
    where length(c1||c2||nvl(c3,''))=2 
           and ( (c1||c2||nvl(c3,''))='AB' 
           or    (c1||c2||nvl(c3,''))='BA')
      

  4.   

    我觉得阿涛的方法不错,welyngj(平平淡淡) 和: pumawang(想什么都学会!) 的方法有一些不好,因为,出于题目的考虑,假如,C1是null,C2是Null的情况,没有考虑,你们太受提供的数据的限制了。
      

  5.   

    谢谢给位,可能我举例太简单了,
    如果C1,C2,C3是不定长字符,难道还要我先数好
    C1||C2||C3 多长么???
      

  6.   

    select * from TTT where (C1||C2='AB' or C1||C2='BA') and (length(C3)=0 or C3 is null)
      

  7.   

    由阿涛的方法改进来的
    select * from ttt 
    where c1||c2||c3 like '%A%' and c1||c2||c3 like '%B%'
      

  8.   

    comcn(大XX) 的方法,根本不能满足 只有 这个条件。
      

  9.   

    select * from ttt 
    where (c1||c2||c3||c4||c5||c6||c7||c8||c9||c10) = 'AB' or (c1||c2||c3||c4||c5||c6||c7||c8||c9||c10) = 'BA'length的条件是多余的,因为,后面的等于的条件就决定了,他们是2位的.
    是Null的情况下,是不需要转换的,
    但是要考虑空格,看数据库的字段的类型了。
      

  10.   

    select * from ttt
    where nvl(c1,1)*nvl(c2,1)*nvl(c3,1)='AB'
      

  11.   

    要是3个参数的话,按楼上的写法:
    c1||c2||c3='ABC' OR
    c1||c2||c3='ACB' OR
    c1||c2||c3='BAC' OR
    c1||c2||c3='BCA' OR
    c1||c2||c3='CAB' OR
    c1||c2||c3='CBA' 10个参数我还不如用算盘呢.......:(
      

  12.   

    如果是 "只有" 的话
    Croatia(Croatia)的方法就行了啊 select * from ttt 
    where (c1||c2||c3||c4||c5||c6||c7||c8||c9||c10) = 'AB' or (c1||c2||c3||c4||c5||c6||c7||c8||c9||c10) = 'BA'