是否可以使用查询参数来填充IN关键字
想象一下将GUID作为主键的表。 我想根据主键选择其中一些行。 我想使用如下查询:
SELECT * FROM mytable WHERE id IN ('firstguidhere','secondguidhere');
我使用ADO.NET来查询数据库,所以我想使用参数化查询而不是动态sql,这显然可行,但我想保留参数化查询的好处(安全性,转义等…) 。
是否可以使用sql-parameters填充IN子句的集合?
您可以将GUID列表作为逗号分隔的字符串参数传递,并使用表值UDF将它们拆分为要在IN
子句中使用的表:
SELECT * FROM my_table WHERE id IN (SELECT id FROM dbo.SplitCSVToTable(@MyCSVParam))
Erland Sommarskog有一篇有趣的文章 ,其中包含如何使用UDF将逗号分隔的字符串拆分为表的示例。
(出于性能原因,您应该确保您的UDF是内联表值,而不是多语句。)
上述就是C#学习教程:是否可以使用查询参数来填充IN关键字分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1014034.html