hive check逗号分隔String包含一个字符串

时间:2014-03-25 07:00:39

标签: string hive

我在hive表list_ids中有一个列,它是以逗号分隔的字符串形式存储的id列表。

如何为此列编写查询以检查它是否存储特定的ID

示例:

 list_ids = "abc,cde,efg"

我想要像

这样的东西
 select * from table_name where list_ids contains cde; 

3 个答案:

答案 0 :(得分:25)

使用Hive标准函数splitarray_contains

split(string str, string pat)通过将pat(正则表达式)拆分为

来返回array<string> 如果数组包含值

,则

array_contains(array<T>, value)返回true

<强> select * from table_name where array_contains(split(list_ids,','),'cde')

答案 1 :(得分:16)

Hive支持LIKE运算符。您可以使用以下方法轻松完成:

select * from table_name where list_ids like '%cde%';

查看此语言手册以获取更多信息:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

答案 2 :(得分:0)

使用Hive功能爆炸即可实现此目的。

实施例

  

从table_name中选择*

左侧视图爆炸(list_ids)   explosion_table为list_id_tbl
其中list_ids =&#39; cde&#39;