我在后端有一个带有hive db的Web应用程序,用户可以从中选择4种不同类型的值,并在UI上显示相关数据。
示例字段可能是:
用户可以为上述字段(单个或多个)选择不同的值并请求数据。
我有一个单独的hive查询,其中有多个IN子句,并与AND逻辑运算符结合生成数据。
一切都很好,直到用户为每个字段选择至少一个值。但是,如果用户选择3个字段的过滤器并留空,则将''传递给IN子句,其中where条件并且不显示任何数据。因为没有一行符合条件。
如果没有选择某个字段,我必须在IN子句中传递一些东西来获取该字段的所有数据或删除该字段的IN子句。
如果在创建查询之前选择了某个值,则每次检查都会涉及很多情况。
如果有人可以建议使用多个IN的单个查询,并传递一些参数来获取没有选择值的字段的所有行。
注意:我正在使用配置单元JDBC查询。
答案 0 :(得分:0)
您可以使用以下结构处理此问题:
where ($subporfolio is null or subportfolio = $subportfolio) and
($status is null or status = $status) and
. . .
当然in null
可能是= ''
,具体取决于您传递值的方式。
答案 1 :(得分:0)
我发现创建动态查询更好。 我循环访问所有输入参数并检查其值是否为空或仅为空,然后将其添加到查询中的where IN子句中。