我有一列包含列表中的所有值。
Column A|Column B
AAA |1 2 45 67 89
BBB |16 25 36 45 89 63
CCC |52 63 98 41 22 66
在上表中,B 列包含实际上是列表的字符串值。
我需要忽略 B 列中的前两个和最后两个值。
我尝试使用 split 函数,我可以忽略前两个值。但忽略最后两个值是一个挑战,因为我有不同大小的列表。
我使用的代码是:
select distinct column_A,column_B,split(column_B,'\\s')[2] AS ign_first_val,
split(column_B,'\\s')[-2] as ign_last_val
FROM Xyz
是否有任何简单的方法可以使用 HQL 忽略列表中的前两个和最后两个值?
最佳答案
您应该能够使用regexp_extract
:
select regexp_extract(column_B, '^\\s*(\\d+\\s+){2}(.*?)(\\s+\\d+){2}\\s*$', 2)
正则表达式的第一部分跳过前两个值,最后一部分跳过最后两个值,仅将中间部分提取到第 2 组中,这就是表达式返回的内容。
这是正则表达式在 regex101.com 上运行的演示
关于mysql - 需要使用 Hive HQL 忽略列表列中的最后两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54878649/