繁体   English   中英

从具有多个搜索值组合的 DB2 表中过滤行

[英]Filtering rows from DB2 table with multiple combination of search values

假设我有一个包含 5 列的 DB2 表。 我应该如何根据每列中已知值的任何组合过滤行?

如果我对 5 列中的每一列都有一个搜索值,并且我想返回与所有列匹配的行,我可以简单地过滤它

 SELECT * FROM TABLE
  WHERE A = value1 and B = value2 and C = value3 and D = value 4 and E = value 5

但是,如果我只有来自 A 和 B 列或 A 和 C 或 AB 和 C 等列的搜索值怎么办?如何制作一个可以根据我拥有的可用搜索值过滤返回行的 WHERE 子句?

我怎样才能实现您输入的搜索条件越多,您将在一个 WHERE 子句中返回的行越少的想法?

这取决于特定的数据库解析器,但如果您有五列abcde和五个可能的 null 参数p0p1p2p3p4 ,则查询可以采用以下形式:

select *
from t
where (a = p0 or p0 is null)
  and (b = p1 or p1 is null)
  and (c = p2 or p2 is null)
  and (d = p3 or p3 is null)
  and (e = p4 or p4 is null)

请记住,像这样的查询几乎没有提供优化的机会。 引擎很可能每次都需要扫描整个堆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM