本帖最后由 qthai 于 2009-09-17 10:09:07 编辑

解决方案 »

  1.   

    不推荐这样做。and sex like decode(:s_sex, null, '%', :s_sex)
      

  2.   


    也就是说这种写法是支持的?可是在sqlPlus里貌似会提示SQl语句未结束,这是为什么呢?
      

  3.   


    没有问题的,我试过,这个里面'%',这里的逗号是中文的,可能是这里导致的。一下是我做的实验
    SQL> variable s_sex varchar2(10);
    SQL> select * from (select '1' sex, 'David' name from dual union select '0' sex,
     'Janes' name from dual) where sex like decode(:s_sex, null, '%',:s_sex);
    S NAME
    - -----
    0 Janes
    1 David
    这里没有定义s_sex的值,所以条件不生效SQL> exec :s_sex := 1;
    再执行同样的语句,生效,只有一条sex=1返回
    S NAME
    - -----
    1 David
    SQL> exec :s_sex := 0;
    再执行同样的语句,生效,只有一条sex=0返回
    S NAME
    - -----
    0 Janes
      

  4.   


    哦 原来decode相当于if then else 啊 这招不错,呵呵.那方括号语法呢?应该如何使用啊?
    String qrySql = "select id,name,sex from STUDENT"+
    "where name = :s_name"+
    "[and sex = :s_sex]"
      

  5.   

    String qrySql = "select id,name,sex from STUDENT"+
    "where name = :s_name"+
    "[and sex = :s_sex]"
    这样的java写法第一次看见,1楼的讲解一下塞。