我现在可以得到比如:“,10,1,45,25,2,24,128”像这样的字符串substr,请问我如何才能去取出表中字段ID值为10,1,45,25,2,24,128的记录,如果把这个字符串传进存储过程里,那SQL又怎么写呢?

解决方案 »

  1.   

    split函数,将字符串转换为以','分隔的字符转数组。
      

  2.   

    //****创建一个存储过程creac proc prc_systemuser_filter
    (
       @SQLEx varchar(1000)
    )
    as
    begin     declare @strSQL varchar(2000);
         set @strSQL='SELECT * FROM TB_SYSTEMUSER WHERE (1>0)';     if(@SQLEx IS NOT NULL AND RTRIM(LTRIM(@SQLEx))<>'' AND @SQLEx<>N'')
         begin
         
          set @strSQL=@strSQL+@SQLEx;     end
         
         exec(@strSQL);
    end//*****调用存储程//****这里只给出表示层接口private void SystemUser_Filter()
    {
       string strTemp="10,1,45,25,2,24,128"
       
       //****拆分字符
       string[] strApp=strTemp.split(Convert.ToChar(","));   foreach(string str in strApp)
       {
           //****查找相应数据
           DBComTable.TBSystemUser mTBSystemUser=new DBComTable.TBSystemUser():
           mTBSystemUser.SQLEx=" AND USERCODE='" + str + "'";       DataSet DSet=(new webservices.frinedservices()).systemsuser(mTBSystemUser);
       }   //*****在进行相应处理......
    }
      

  3.   

    你的意思应该是往一张表里同时插入多条数据吧,比如是你取到的字符串为ID,就好象服务器选择某几个人之后,然后给这些人发消息,是这个意思吗?
    dltTarget是一个
    <select style="WIDTH: 100%" multiple size="10" name="dltTarget"></select>
    IDList=Request["dltTarget"];
    IDList="'" + IDList.Replace(",","','") + "'";
    然后把IDList作为参数传进去,
    PROC
    INSERT INTO [UploadInfo]
    ([UploadTitle], [UploadDetail], [FilePath], [Inputer])
    VALUES(@uploadTitle, @UploadDetail, @FilePath, @Inputer);
    declare @newID int;
    select @newID= @@identity
    declare @SQL varchar(2000);
    set @SQL='insert UploadInfo_Groups (GroupNo, UploadInfoID) select GroupNo ,'
    +  ltrim(str(@newID )) + 
    ' from  AUTH_GROUP where GroupNo in(' 
    +
     @GroupList 
    + ')'; execute(@SQL);
    这是以前写的,就这么个意思。@set这个语句,就是同时插入多条记录