比较配置单元中的2个列值

时间:2018-06-24 23:06:45

标签: hive

我正在尝试使用以下示例数据比较蜂巢中的2个列值

m_bldg_id       bldg_id                                 Indicator

1911            1968 19657 19658                            Not resident
19657           1968 19657 19658                            resident     
19658           1968 19657 19658                            resident
1968            1968 19657 19658                            resident   
19887           1968 19887 19658 16755 17543 34213          resident
11132           1968 19887 19658 16755 17543 34213          Not resident

我需要写一个case语句来识别指标,如果m_bldg_id像bldg_id一样,那么指标是常驻的。因此对于上述数据的第一行,1911的m_bldg_id不在1968 19657 19658中,因此指标值不在常驻在第二行中m_bldg_id的值为19657 bldg_id值为'1968 19657 19658',因此它应该是常驻的。

我尝试过  CASE WHEN m_bldg_id like %bldg_id% then 'resident' else 'not resident'无效,请帮助

2 个答案:

答案 0 :(得分:0)

'%'与要比较的字段连在一起

select 
     m_bldg_id,
     bldg_id,
     case 
        when m_bldg_id like '%' + bldg_id + '%' then 'resident' 
        else 'Non resident' 
     end as Indicator
from
tablename

答案 1 :(得分:0)

使用split() + array_contains()

select 
     m_bldg_id,
     bldg_id,
     case 
        when array_contains(split(bldg_id,' '),m_bldg_id ) then 'resident' 
        else 'Non resident' 
     end as Indicator
from tablename;

或使用instr()函数:

case when instr(bldg_id, m_bldg_id) > 0 then 'resident' else 'Non resident' end as Indicator