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

如何在Hive SQL中查找数字字符串中首个7的位置?

用Hive SQL查找字符串中第一个7的位置

嘿,这个需求用Hive自带的内置函数就能轻松解决,我给你拆解一下:

核心函数:instr()

Hive里的instr(string str, string substr)函数专门用来返回子字符串在原字符串中第一次出现的起始位置,而且它的计数是从1开始的,正好匹配你要的从左数的位置要求。

完整SQL实现

假设你的表名叫your_table,直接用下面的语句就能得到你想要的结果:

SELECT 
    Id,
    pp,
    instr(pp, '7') AS pos
FROM 
    your_table;

对应示例数据的验证

咱们拿你给的测试数据跑一遍:

  • 对于Id=1的11157899,第一个7在第5位,instr会返回5(这里提一句,你之前的期望输出里pos写的8应该是笔误哦)
  • Id=2的71166678,第一个7在第1位,返回1,和期望一致
  • Id=3的72345243,第一个7在第1位,返回1,也和期望一致

额外处理:无7的情况

如果你的数据里存在pp字段不含7的记录,instr会返回0。要是你想把这种情况转换成NULL或者其他标识,可以用CASE WHEN调整:

SELECT 
    Id,
    pp,
    CASE 
        WHEN instr(pp, '7') > 0 THEN instr(pp, '7') 
        ELSE NULL  -- 这里可以换成你想要的默认值,比如0或者'无7'
    END AS pos
FROM 
    your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:33:11