我用$array=explode(' ',$_REQUEST[number])得到一个我输入一些列数据的数组之后,我怎么才能用“select * from table where number in ( )”的语句来实现查询?就是数组$array中的每一个值怎么才能在in后面的范围内体现出来?写“select * from table where number in ($array)”好像不行,是错的。谢谢了。

解决方案 »

  1.   

    $array 在sql语句中会被看成是一个变量,不会被看成是一串数
    可以用instr($array,number)>0判断
    如果是数字类型的列还需要用到to_char
      

  2.   

    把数据的值转换成单个字符串,如:
    array[0]='a';
    array[1]='b';
    array[2]='c';
    转换成字符
    declare v varchar2(4000)
    v:=''||array[0]||'',''||array[1]||'',''||array[2]||''execute immediate 'select * from table where number in ('||v||')';
      

  3.   

    可以写一个循环动态组合语句
    思路:
    declare
     sqlstr varchar2(4000) ;
     i number ;
     begin
    i:=0;
    while(i<array.length) loop
    sqlstr:=''''||array[i]||''',';
    loop end;
    sqlstr:=substr(sqlstr,1,lenght(sqlstr)-1);--去掉最后一个','
    execute immediate 'select * from table where number in ('||sqlstr||' )';
    end;