regex - Hive 从字符串中提取数值
问题描述
我有一张桌子:
column1 column2
The first value is 200 gb need to restart (2 times)
The 2nd value is 700 gb need (optional) to restart (10 times)
我正在尝试从表中获取数值。预期的输出是
column1_numeric column2_numeric
200 2
700 10
对于 column1:我尝试使用以下方法获取数据:regexp_replace(column1, '[^0-9]', '') as column1_numeric;
但这不适用于第二行并返回 2700
对于column2:我正在尝试:regexp_replace(regexp_extract(column2,'\\((.*?)\\)'), '[^0-9]', '') as column2_numeric
但这也不适用于第二行并返回空值
请问有什么建议吗?
解决方案
从字符串中提取最后一个数值'(\\d+)([^0-9]*)$'
:
select
regexp_extract(column1,'(\\d+)([^0-9]*)$',1) as column1_numeric,
regexp_extract(column2,'(\\d+)([^0-9]*)$',1) as column2_numeric
...
它提取
column1_numeric column2_numeric
200 2
700 10
您也可以使用短一点的代替[^0-9]
(不是数字) :\\D
'(\\d+)(\\D*)$'
推荐阅读
- geocoding - 使用 Here.com API 查找圈内城市
- python - 如何在 `requirements.txt` 中包含发布候选 (rc) 或实际版本
- python - Python在并行化任务中包含while循环
- java - Spring Boot中基于角色的授权
- django - ubuntu 中的 Django Bootstrap 模块
- jbase - 导入 t24 版本时设计工作室出错
- reactjs - 为什么我的 Suspense 不显示我延迟加载的组件?
- shell - 我们如何使用 '~|~' 分隔符来使用脚本命令分割记录?
- sql - 根据两行的数据创建一行
- python - 如何在python中的word docx中替换整个xml元素,就好像它们是字符串一样