tnblog
首页
视频
资源
登录
这世间真的有很美的爱情,也有很温柔善良的女孩纸。
排名
11
文章
201
粉丝
10
评论
13
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

c# sql参数化 如何使用in

10493人阅读 2020/10/22 11:30 总访问:283563 评论:0 收藏:0 手机
分类: .net

直接使用in是不可以的,in使用参数时会强制转换参数类型与条件字段一致,不支持构造字符串(如果字段本身为varchar、char型,则in相当于只有一个条件值,而不是一组)
你可以使用exec,把整个sql当做参数来执行,如
exec( ‘SELECT * FROM table WHERE id IN ( ‘+@ids+ ‘) ‘)
大但是感觉这样是拼接的参数对sql诸如需要考虑一下安全性。

参考代码如下:

  1. string sql = "exec('select * from bid where id in ('+@IDS+')')";
  2. System.Data.SqlClient.SqlParameter[] sp = new System.Data.SqlClient.SqlParameter[]
  3. {
  4. new System.Data.SqlClient.SqlParameter("@IDS","1,2,3,4,5,6,7")
  5. };
  6. System.Data.DataTable dt = SqlServerHelper.GetDataSet(sql, "PT", sp).Tables[0];

在数据库中执行:

  1. --查询的值列表
  2. DECLARE @idlist varchar(100)
  3. SET @idlist='1,2,3'
  4. --拼接并执行动态Transact-SQL语句
  5. EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
  6. GO
  7. --要查询的字段类型是字符型
  8. --查询的值列表已经加上了字符串边界符
  9. DECLARE @idlist varchar(100)
  10. SET @idlist='''a'',''b''''a'',''c'''
  11. --拼接并执行动态Transact-SQL语句
  12. EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
  13. GO
评价