SELECT *
FROM TABLE A
WHERE A.RATE_PLAN_TYPE=?这样可以看懂了吧

解决方案 »

  1.   

    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE=?这样可以看懂了吧
    用动态SQL来处理吧,通过拼接SQL语句
      

  2.   

    SELECT *
    FROM TABLE A
    WHERE ((?=1 and (A.RATE_PLAN_TYPE=? or A.RATE_PLAN_TYPE is null)) or (?<>1 and A.RATE_PLAN_TYPE=?))
      

  3.   

    我知道可以在查询列中用if then来做 但是这个是查询条件 好像没办法了
      

  4.   

    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE<>'1'  OR A.RATE_PLAN_TYPE IS NULL
      

  5.   

    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE=?这样可以看懂了吧
    用动态SQL来处理吧,通过拼接SQL语句
    不可以的 因为sql执行不通过程序  是通过框架的一个服务 所以代码改不了只能传一条要执行的sql进去
      

  6.   

     上面理解错了,看看是这样不?
    假设传入的参数为V
    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE=V AND (V<>'1' OR A.RATE_PLAN_TYPE IS NULL)
      

  7.   

    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE=?这样可以看懂了吧
    用动态SQL来处理吧,通过拼接SQL语句
    不可以的 因为sql执行不通过程序  是通过框架的一个服务 所以代码改不了只能传一条要执行的sql进去SELECT *
      FROM TABLE A
     WHERE decode(?,
                  '1',
                  decode(A.RATE_PLAN_TYPE, '1', 'y', null, 'y', 'n'),
                  decode(A.RATE_PLAN_TYPE, ?, 'y', 'n')) = 'y'
      

  8.   

    写一个存储过程一样的判断下declare type varchar2(10);
    if type=1 then
      select * from tb where RATE_PLAN_TYPE=1 or RATE_PLAN_TYPE is null;
    else
      select * from tb where RATE_PLAN_TYPE= type;
    end if
      

  9.   

    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE=?这样可以看懂了吧
    用动态SQL来处理吧,通过拼接SQL语句
    不可以的 因为sql执行不通过程序  是通过框架的一个服务 所以代码改不了只能传一条要执行的sql进去SELECT *
      FROM TABLE A
     WHERE decode(?,
                  '1',
                  decode(A.RATE_PLAN_TYPE, '1', 'y', null, 'y', 'n'),
                  decode(A.RATE_PLAN_TYPE, ?, 'y', 'n')) = 'y'

    两个都可以版主的这个decode没这样用过 请问decode(A.RATE_PLAN_TYPE, '1', 'y', null, 'y', 'n')有拼接A.RATE_PLAN_TYPE='1' OR A.RATE_PLAN_TYPE IS NULL的功能?  从最外层的decode来看是恒成立的吧
      

  10.   


    公司框架来执行查询类的sql,只给传sql执行。。
      

  11.   

    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE=?这样可以看懂了吧
    用动态SQL来处理吧,通过拼接SQL语句
    不可以的 因为sql执行不通过程序  是通过框架的一个服务 所以代码改不了只能传一条要执行的sql进去SELECT *
      FROM TABLE A
     WHERE decode(?,
                  '1',
                  decode(A.RATE_PLAN_TYPE, '1', 'y', null, 'y', 'n'),
                  decode(A.RATE_PLAN_TYPE, ?, 'y', 'n')) = 'y'

    两个都可以版主的这个decode没这样用过 请问decode(A.RATE_PLAN_TYPE, '1', 'y', null, 'y', 'n')有拼接A.RATE_PLAN_TYPE='1' OR A.RATE_PLAN_TYPE IS NULL的功能?  从最外层的decode来看是恒成立的吧
    不是,这个是decode的嵌套使用
      

  12.   

    SELECT *
    FROM TABLE A
    WHERE A.RATE_PLAN_TYPE=? or (1=? and A.RATE_PLAN_TYPE is null)为了迁就框架的简单而使SQL语句复杂化,其实是不值得提倡的
      

  13.   

    接收的RATE_PLAN_TYPE为空的话是不是会有点问题?
      

  14.   

    应该不会传空吧,如果会传空值,首先a.rate_plan_type=?就不成立
    若真有的话,再加个等式,如果为空,传入字符串‘null'
    这个表达式越来越诡异了
    where a.rate_plan_type=? or ('1'=? and rate_plan_type is null) or ('null'=? and rate_plan_type is null)
      

  15.   

    看完瞬间感觉逻辑紊乱了。你的两种情况加一块是一个全集吗?你的业务逻辑是这样吗?
    现在有四种情况,
    1.RATE_PLAN_TYPE=1   and   A.RATE_PLAN_TYPE IS NULL
    2.RATE_PLAN_TYPE=1   and   A.RATE_PLAN_TYPE IS  not  NULL
    3.RATE_PLAN_TYPE<>1   and   A.RATE_PLAN_TYPE IS NULL
    4.RATE_PLAN_TYPE<>1   and   A.RATE_PLAN_TYPE IS  not  NULL
    你说的第一种情况包括1、2、3,而你的第二种情况是想要不带or,也就是3、4