【发布时间】:2021-01-20 12:34:28
【问题描述】:
我在 JAVA 中有一个处理数据库的条件逻辑,我想将其转换为 Impala。我对在 impala 中使用“CASE WHEN”和“IF”函数感到困惑,那么下面哪个 impala 逻辑更好用?对吗?
逻辑上发生的事情是,如果主要条件为真,我正在尝试从第一个表 (table_seller_inside) 中获取列 (seller_id)。然后检查 seller_id 是否为 null,然后我会从另一个表中获取 (table_seller_outside)
JAVA逻辑:
if(temp_table.col_1!=null && !temp_table.col_2.trim().equals("") )
{
-> table_seller_inside.seller_id
if(seller_id==null)
{
-> table_seller_outside.seller_id
}
}
Impala 逻辑与 CASE WHEN:
SELECT CASE WHEN temp_table.col_1 IS NOT NULL THEN
sel_in.seller_id as seller_id,
sel_in.seller_name as seller_name,
sel_in.seller_number as seller_num
CASE WHEN (seller_id IS NULL) THEN
sel_out.seller_id as seller_id,
sel_out.seller_name as seller_name,
sel_out.seller_number as seller_num,
END
END
FROM table_seller_inside sel_in,
table_seller_outside sel_out
IF 的 Impala 逻辑:
if(boolean condition, type ifTrue, type ifFalseOrNull)
SELECT if(temp_table.col_1 !="NULL", (sel_in.seller_id as seller_id,
sel_in.seller_name as seller_name,
sel_in.seller_number as seller_num),
if(seller_id ="NULL", (sel_out.seller_id as seller_id,
sel_out.seller_name as seller_name,
sel_out.seller_number as seller_num)
FROM table_seller_inside sel_in,
table_seller_outside sel_out
【问题讨论】:
标签: if-statement case impala