表A里有一个10位的varchar2字段ZSSCD
现在从输入的是三个参数,IN1(3位),IN2(3位),IN3(4位)
原来都是每个参数只有一种输入可能,所以查询的时候直接用:
where ZSSCD like IN1 || IN2 || IN3 || '%'但现在IN1,IN2,IN3都有可能有多个输入值,例如,IN1 = {'001','002'..},IN2 = {'001','002'..}
,IN3 = {'0001','0002'..},且可能输入值的个数不定。请教高人如何写这个where条件。

解决方案 »

  1.   

    像这样多变量且情况不一定的情况,最好通过存储过程做
    可以考虑用游标得到输入的in1,in2,in3,再组合查询
      

  2.   

    where charindex(IN1,substr(ZSSCD,1,3)) >0 and charindex(IN2,substr(ZSSCD,4,3)) > 0 
    and charindex(IN3,substr(ZSSCD,7,4)) > 0 
      

  3.   

    楼上说的charindex()在oracle中应该是instr()
    但楼主的意思是说输入的值,例如in1,同时输入1个以上值的话,你这样就不可行了吧
      

  4.   

    where instr(IN1,substr(ZSSCD,1,3))   > 0   or instr(IN2,substr(ZSSCD,4,3))   >   0   
    or instr(IN3,substr(ZSSCD,7,4))   >   0  根据楼主的要求应该用OR