我有一个带有where子句的查询,如下所示:
WHERE field IN ( 1, 2, 3 )
可以对此进行参数化,使其看起来像:
(:list)中的WHERE字段?
如何创建:list参数,假设它是一个整数列表,可以是1到10个整数?
ASP.net,webforms如果有所作为。
答案 0 :(得分:2)
有两种方法可以容纳Dynamic IN列表:
大多数人更喜欢非动态SQL方法 - this link provides various ways to do it。使用它的最大原因是:
WHERE :list LIKE '%,' || t.column || ',%'
......就是上面的内容:
简单的事实是,它不会按预期工作。 Oracle 10g +支持的正则表达式允许对列进行条件检查,但仍然面临着将索引呈现为没有问题的问题
提及“动态SQL”,您可能会hounded about SQL injection attacks。使用绑定变量可以缓解这种担忧。
也就是说,动态SQL需要对查询进行最少的更改。
答案 1 :(得分:0)
与SQL Server相同的答案,已在此处询问:Parameterize an SQL IN clause
答案 2 :(得分:0)
据我所知,你不能。你将在同一个地方混合价值观和经营者。
但是,在ASP.NET中自动创建一个参数数组并动态获取它应该相当简单:
WHERE field IN (:list1, :list2, :list3, :list4)
答案 3 :(得分:0)
这个问题'如何绑定列表'似乎出现了很多。
在Oracle中执行此操作最简单的“技巧”是使用我在此处发布的答案:
Dynamic query with HibernateCritera API & Oracle - performance
我不能说这是我的伎俩,因为它来自Tom Kyte的博客,他是一位Oracle大师!