如何检查配置单元表列中是否存在字符串模式

b4wnujal  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(306)

我正在使用包含hive-0.13.1的cloudera集群进行日常活动。
我身边有几个字符串模式,我需要找出这些模式是否存在于配置单元表中的一列中。
例如:我的字符串模式是板球运动员的简称,如“德拉维德”、“萨钦”、“甘古利”。我在Hive里有一列,里面有所有板球运动员的全名。

select full_name from players limit 3;

Rahul Dravid
Sachin Ramesh Tendulkar
Sourav Ganguly

我需要将我的字符串模式与查询返回的值进行比较,如果匹配,则创建另一个带有“y”的列,如果不匹配,则创建另一个带有“n”的列。
除了regex之外,如何编写配置单元查询来实现这一点?

kgsdhlau

kgsdhlau1#

使用条件函数的@shu answer的简短版本 if 和关系运算符 RLIKE 对于正则表达式匹配:

SELECT full_name, 
if((lower(full_name) RLIKE 'dravid|sachin|ganguly'), 'Y', 'N') AS is_match
FROM players;
wgxvkvu9

wgxvkvu92#

可以将case语句与like、or运算符一起使用
在下面的查询中,我对全名字段使用了lower函数,并将字段中的数据与较低的名称(dravid、sachin)进行了比较。
query:-

select full_name, 
case 
    lower(full_name) like '%dravid%' 
or 
    lower(full_name) like '%ganguly%' 
or 
    lower(full_name) like '%sachin%' 
    then 'Y' 
else 'N' 
end new_column_name 
from players limit 3;

相关问题