You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive中从字符串提取指定值:如何获取首个/前的数值5

解决Hive中提取logsummary字段第一个斜杠前数值的问题

嘿,我来帮你搞定这个小问题!你之所以拿不到第一个斜杠前的5,核心原因是Hive的split函数返回的数组是从索引0开始计数的——你之前用的[1]是取第一个斜杠后面的内容,[2]是第二个斜杠后面的,自然拿不到最开头的数值。

方法一:修正split函数的索引

直接把数组索引改成[0]就能拿到目标数值了,完整SQL如下:

SELECT 
  floor(split(logsummary, '[/]')[0]) as first_value, -- 这里取索引0,就是第一个/前的5
  floor(split(logsummary, '[/]')[1]) as draws, 
  floor(split(logsummary, '[/]')[2]) as losses 
FROM table A;

方法二:用substring_index更简洁

如果你觉得记索引麻烦,Hive还提供了substring_index函数,专门用来按分隔符截取内容,写法更直观:

SELECT 
  floor(substring_index(logsummary, '/', 1)) as first_value, -- 取第一个/前的所有内容
  floor(split(logsummary, '[/]')[1]) as draws, 
  floor(split(logsummary, '[/]')[2]) as losses 
FROM table A;

这个函数的逻辑是:substring_index(字段名, 分隔符, 截取次数),当次数为正数时,从左往右数第N个分隔符前的内容,这里写1就刚好取第一个斜杠前的数值。

我刚开始用Hive的字符串函数时,也经常搞混split的索引起始位,所以特别能理解你的困惑~

内容的提问来源于stack exchange,提问作者Perry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:52:56