当前位置:  开发笔记 > 编程语言 > 正文

是否可以使用查询参数来填充IN关键字

如何解决《是否可以使用查询参数来填充IN关键字》经验,为你挑选了1个好方法。

想象一下将GUID作为主键的表.我想根据主键选择其中一些行.我想使用如下查询:

SELECT * FROM mytable WHERE id IN ('firstguidhere','secondguidhere');

我正在使用ADO.NET来查询数据库,所以我想使用参数化查询而不是动态sql,这显然可行,但我想保留参数化查询的好处(安全性,转义等...) .

是否可以使用sql-parameters填充IN子句的集合?



1> LukeH..:

您可以将GUID列表作为逗号分隔的字符串参数传递,并使用表值UDF将它们拆分为要在IN子句中使用的表:

SELECT *
FROM my_table
WHERE id IN (SELECT id FROM dbo.SplitCSVToTable(@MyCSVParam))

Erland Sommarskog有一篇有趣的文章,其中包含如何使用UDF将逗号分隔的字符串拆分为表的示例.

(出于性能原因,您应该确保您的UDF是内联表值,而不是多语句.)

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有