c# sql参数化 如何使用in 电脑版发表于:2020/10/22 11:30 直接使用in是不可以的,in使用参数时会强制转换参数类型与条件字段一致,不支持构造字符串(如果字段本身为varchar、char型,则in相当于只有一个条件值,而不是一组) 你可以使用exec,把整个sql当做参数来执行,如 exec( 'SELECT * FROM table WHERE id IN ( '+@ids+ ') ') 大但是感觉这样是拼接的参数对sql诸如需要考虑一下安全性。 参考代码如下: ``` string sql = "exec('select * from bid where id in ('+@IDS+')')"; System.Data.SqlClient.SqlParameter[] sp = new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@IDS","1,2,3,4,5,6,7") }; System.Data.DataTable dt = SqlServerHelper.GetDataSet(sql, "PT", sp).Tables[0]; ``` 在数据库中执行: ``` --查询的值列表 DECLARE @idlist varchar(100) SET @idlist='1,2,3' --拼接并执行动态Transact-SQL语句 EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')') GO --要查询的字段类型是字符型 --查询的值列表已经加上了字符串边界符 DECLARE @idlist varchar(100) SET @idlist='''a'',''b''''a'',''c''' --拼接并执行动态Transact-SQL语句 EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')') GO ```