【发布时间】:2023-03-19 05:35:01
【问题描述】:
我有一个从Excel 2016 表到IBM DB2 数据库的MS Query 连接。我使用参数化查询并将参数值链接到 Excel 单元格。虽然= < > like 等“单值”子句可以工作,但我无法让IN 子句处理多个值,否则就是超级简单的查询。
这是我如何生成参数值的简单演示数据集:
D 列公式是 =IF(C2>5,A2&",",""),它检查 C 列值是否大于 5,如果 TRUE 则在 D 列中填充 ID。我希望使用辅助单元格来合并/合并列 D 中的所有值,我想将其用于 IN 子句作为值(尚未完成)。
如何在单元格中使用"value1, value2, value3, ..." 来运行IN 子句查询? 有可能吗?IN 子句在链接单元格保持值 1 但 1, 3 产生错误消息时工作正常:
"Bad parameter type. Microsoft Excel is expecting a different kind of value than what was provided".
对每个单元格使用单独的参数和OR 子句在技术上看起来是可行的,但实际上数据集可以轻松达到 50-100 个值,这意味着参数设置量非常大。
查询本身很简单:
select * from PRODUCTS a
where a.prod_ID in (1,3)
或作为 Excel MS Query 替代方案:
select * from PRODUCTS a
where a.prod_ID in ?
【问题讨论】:
-
一般来说,参数不能与
IN很好地混合使用,如果您正在动态构建 SQL,那么您可以像您提到的那样为每个值添加一个参数:在一个可管理的循环中。 -
嗨蒂姆!我正在关注您,但不幸的是,还没有深入到无法实施的程度。您能否详细说明或参考一些材料,尤其是 Excel 环境使用?
-
什么平台和版本的 Db2
-
有点像 Christian 的回答:stackoverflow.com/questions/9384446/… 但在 VBA 中
标签: sql excel db2 parameterized-query