Hive中查看字段中是否包含某些字符串的函数
CREATE TABLE employee (
name STRING,
age INT
);
INSERT INTO employee VALUES
('Alice', 25),
('Bob', 30),
('Charlie', 35),
('David', 40);
首先我们在hive中创建表插入数据进行测试
方案一:like
select * from employee where name like '%i%';
#返回name中包含i的数据
like可以直接起一个过滤作用,用起来简单方便放在第一个。
方案二:locate(字符名,字段名)
select locate('i',name) from employee;
#返回包含i字段中i的位置如果为0则说明不包含i
返回字符串aaa在字段field_name中第一次出现的位置,若未出现,则返回0
方案三:instr(字段名,字符串)
select locate(name,'i') from employee;
#返回包含i字段中i的位置如果为0则说明不包含i
返回字符串aaa在字段field_name中第一次出现的位置,若未出现,则返回0
方案四:regexp_extract
regexp_extract(subject, 'ABCD', 0) != ''
select *,regexp_extract(name,'ice',0) from employee where regexp_extract(name,'ice',0) !='';
其中,subject是要判断的字符串,'ABCD;‘是要匹配的字串,0表示从整个匹配结果中获取整个字串。如果返回的字串不为空,则说明匹配到了,即包含字串'ABCD’,否则不包含。你需要将your_table替换为你实际使用的表名或子查询。
方案五:strpos [hive 不支持,其他技术支持 ]
strpos(string str, string substr)
-- str 是源字符串,substr 是要查找的字符串,查找子字符串在源字符串中第一次出现的位置,如果查找不--- 到范围0 ,查找到了返回下标