我有一个后端带有hivedb的web应用程序,用户从中选择4种不同类型的值,相关数据显示在ui上。
示例字段可以是:
项目id
子投资组合
项目状态
项目财务状况
用户可以为提到的字段选择不同的值(单个或多个)并请求数据。
我有一个带有多个where-in子句的单一配置单元查询,并结合and逻辑运算符来生成数据。
在用户为每个字段选择至少一个值之前,一切正常。但如果用户为3个字段选择筛选器并保留为空,则“”将传递给where条件中的in子句,并且不显示任何数据。因为没有一行符合条件。
如果某个字段没有被选中,我必须在in子句中传递一些信息,以获取该字段的所有数据,或者删除该字段的in子句。
在创建查询之前每次检查是否选择了一个值将涉及很多情况。
如果有人可以建议使用多个where-in的单个查询,并传递一些参数以获取未选择值的字段的所有行。
注意:我使用的是hivejdbc查询。
2条答案
按热度按时间uxh89sit1#
您可以使用以下结构来处理此问题:
当然了
in null
可能是= ''
取决于传递值的方式。sf6xfgos2#
我发现创建动态查询更好。我遍历了所有的输入参数,并检查了它的值是否不为null或空,然后才将它添加到查询中的where-in子句中。