sql - 有没有办法在 HiveQL 中对数组使用 like 运算符?

标签 sql arrays hive hiveql sql-like

我正在寻找一种使用 like 运算符查询具有多个值的collect_set/list 列的方法。 在下面的示例中,我希望获取具有“121%”等值之一的行

id values
1 ["8001","12100"]
2 ["12134","9999","2222"]
3 NULL
4 ["5671","9765]

结果:

id values
1 ["8001","12100"] -- because of 121 in 2nd value of the collect_set
2 ["12134","9999","2222"] -- because of 121 in first value of the collect_set

任何帮助将不胜感激。谢谢。

最佳答案

使用一些分隔符连接数组,例如 | 并在 RLIKE 运算符中使用连接字符串。

演示:

with mytable as (
select 1 id, array('8001','12100') as `values`
union all
select 2, array('12134','9999','2222')
union all
select 3, array() 
union all
select 4, array('5671','9765') 
)
select * from mytable
where concat('|',concat_ws('|',`values`),'|') rlike '\\|121'

结果:

id  values
1   ["8001","12100"]
2   ["12134","9999","2222"]

注意:正则表达式中的管道 | 需要使用双反斜杠转义。

关于sql - 有没有办法在 HiveQL 中对数组使用 like 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71417147/

相关文章:

mysql - 选择多列中相似值的计数

sql - 检索刚刚插入 SQL 表中的特定行

javascript - 为什么我收到有关 "unexpected non-whitespace after JSON data"的错误消息

objective-c - 使用自定义方法将自定义对象添加到数组 Swift 问题

hadoop - 配置单元错误 : parseexception missing EOF

r - R 如何使用 RJDBC 连接到 Hive?

python - Django:使用 SQL 手动更改模型字段有哪些缺点?

sql - 具有 JOIN 和多个订单列的每组最大 N

javascript - 如何从数组对象中删除元素

sql - 为什么在配置单元中使用变量会增加 18k 映射器?