JerrySoft

导航

Sql中IN的参数传递问题

方法一:
存储过程
  CREATE   function   My_split(@aString   varchar(8000),@pattern   varchar(10))  
  returns   @temp   table([Sid]     [int]   IDENTITY   (1,   1)   NOT   NULL   ,Myvalues   varchar(100))  
  --实现split功能的函数  
  --说明:@aString,字符串,如“27,28,29”;@pattern,分隔标志,如“   ,”  
  as    
  begin  
          declare   @i   int  
          set   @aString=rtrim(ltrim(@aString))  
          set   @i=charindex(@pattern,@aString)  
          while   @i>=1  
          begin  
                  insert   @temp   values(left(@aString,@i-1))  
                  set   @aString=substring(@aString,@i+1,len(@aString)-@i)  
                  set   @i=charindex(@pattern,@aString)  
          end  
          if   @aString<>''    
                insert   @temp   values(@aString)  
          return    
  end  
   
   
  使用 select   *   from   a   where   ID   in   (select   Myvalues   FROM   my_split(@ID,   ','))

方法二:
构成SQL。
string sSQL="select * from mytable where id in (" ;
for(int i=0;i<mylist.Count;i++)
{
    sSQL+="@"+mylist[i].ToString()+",";
}
sSQL=sSQL.Remove(sSQL.Length-1,1);
sSQL+=")";

构成参数;
SqlParameter[] myParams = new SqlParameter[mylist.Count];
for(int i=0;i<mylist.Count;i++)
{
    myParams[i] = (new SqlParameter("@"+mylist[i].ToString(), SqlDbType.Int));
    myParams[i].Value=mylist[i].ToString();
}

posted on 2007-07-27 11:08  水-手  阅读(1205)  评论(0)    收藏  举报