mysql - 需要使用 Hive HQL 忽略列表列中的最后两个值
问题描述
我有一列包含列表中的所有值。
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 列中的前两个和后两个值。
我尝试使用可以忽略前两个值的拆分函数。但是忽略最后两个值是一个挑战,因为我有不同大小的列表。
我使用的代码是:
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 中。
推荐阅读
- sql-server - 使用 SQL 高效查询节点和边
- django-rest-framework - 如何使用 Apache2 和 mod_wsgi 在 CentOS 上部署 django API Rest
- python - TCA9548A I2C 多路复用器与 ADS1100 使用 python 和树莓派
- javascript - 如何通过使用 JS EventListener 的 HTML 表单的输入来更改 HTML 元素的背景颜色
- flutter - 将数据添加到 initState 中的列表以将其显示为 DropdownMenuItem
- c++ - 我遇到了一个错误 E0003,它说#include 文件包含它自己
- python - 不一致的返回值Pylint
- macos - 如何在 macOS 上的 SwiftUI 中实现拖放到 3rd 方应用程序
- notepad++ - 如何用逗号空格小写字符替换句号空格和小写字符?
- css - 响应性 CSS 媒体查询或容器?