首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

使用带参数的SQL语句, 怎么使其支持 IN (@parm) 这样的格式

2012-03-22 
使用带参数的SQL语句, 如何使其支持 IN (@parm) 这样的格式对于wherefield_value@param这样格式的参数,我

使用带参数的SQL语句, 如何使其支持 IN (@parm) 这样的格式
对于

where   field_value   =   @param

这样格式的参数,   我知道如何在C#中处理,   但对于  

where   field_value   in   (@param)

这样的格式应该如何处理?   我已经试过,   使用SqlParammeter对象将多个值,   例如 "1,   2,   3 "这样的值传入是不能得到正确结果的.

[解决办法]
用组合字符串的方式是可以的
[解决办法]
declare @sql nvarchar(500)
set @sql = 'select * from Your table where field_value in ( ' + @param + ') '
exec sp_executesql @sql
[解决办法]
where field_value in (@param1,@param2,@param3,@param4)

[解决办法]
jobine(愚人渡) 一定可以,
idayu(大宇) 如果是动态,个数不定的话.比较麻烦
[解决办法]
不行是什么错误呢?
[解决办法]
传入值 应该和你写SQL时一样

“ '1 ', '2 ', '3 '”类似这种
[解决办法]
string strParamValue = "White,Green ";
string [] strParams = strParamValue.Split( ', ');
string sqlParams = "@name0 ";
for (int i = 1; i < strParams.Length; i++)
{
sqlParams += ",@name " + i;
}
string sql = "select count(*) from authors where au_lname in ( " + sqlParmas + ") ";
SqlConnection conn = db.connection as SqlConnection;
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
for (int i = 0; i < strParams.Length; i++)
{
SqlParameter param = new SqlParameter( "@name " + i, typeof(string));
param.SqlValue = strParams[i];
adapter.SelectCommand.Parameters.Add(param);
}
DataTable tb = new DataTable();
adapter.Fill(tb);

[解决办法]
--你的語句可以直接改為使用charindex來實現,功能的實現是一樣的,而且不用考慮那麼複雜了。

Select * From tablenname where CharIndex( ', ' + Cast(field_value As Varchar) + ', ', ', ' + @param + ', ') > 0
[解决办法]
--或者使用like

Select * From tablenname where ', ' + @param + ', ' Like '%, ' + Cast(field_value As Varchar) + ',% '
[解决办法]
in的时候除非象wuyi8808这样拼接
但是缺点是parameter是有个数限制的
如果太多
则不行

楼上的方法比较好~~~

热点排行