从一个方法里接受一个List<int>集合作为查询语句的参数。比如 string sql ="select v_dvrcamera.id from v_dvrcamera,v_dvr where  v_dvrcamera.Cam_DvrID in (" + strSelect + ")"    参数strSelect 即为一个List<int>.各路高手,这个查询语句我该怎么写?另外当查询出数据后,程序中我要根据List<int>分组,假设List<int>={3,4,5},我想让strSelect 为3,4,5的数据分别放到一个集合中,这又该怎么样弄?

解决方案 »

  1.   

    string sql ="select v_dvrcamera.id from v_dvrcamera,v_dvr where CHARINDEX(','+LTRIM(v_dvrcamera.Cam_DvrID)+',',','+ strSelect +',')>0";
      

  2.   

    select v_dvrcamera.id from v_dvrcamera,v_dvr where CHARINDEX(','+LTRIM(v_dvrcamera.Cam_DvrID)+',',','+ strSelect +',')>0
      

  3.   


    --看完它你就知道该怎么做了.构造使用IN子句的动态Transact-SQL方法进行编号查询--a. 要查询的字段类型是数字型--查询的值列表
    DECLARE @idlist varchar(100)
    SET @idlist='1,2,3'--拼接并执行动态Transact-SQL语句
    EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
    GO--b. 要查询的字段类型是字符型
    --查询的值列表已经加上了字符串边界符
    DECLARE @idlist varchar(100)
    SET @idlist='''a'',''b''''a'',''c'''--拼接并执行动态Transact-SQL语句
    EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
    GO--查询的值列表没有字符串边界符
    DECLARE @idlist varchar(100)
    SET @idlist='a,b''a,c'--由于是字段类型是,所以在拼接时,必须为其加上字符串边界符(')
    DECLARE @s varchar(1000)
    SET @s=''''
        +REPLACE(REPLACE(@idlist,'''',''''''),',',''',''')
        +''''--拼接并执行动态Transact-SQL语句
    EXEC('SELECT * FROM tbname WHERE fdname IN('+@s+')')
    GO
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/06/06/4244580.aspx