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

Hive SQL如何提取字段中数值前的所有字符?

Hive SQL提取COD列数值前的字符

问题说明

原始COD列数据如下:

COD
TPP
PHONE_9985
SMS@TELL-1256
TEXT@123

需要提取每个值中第一个数字出现之前的所有字符,若没有数字则保留原内容,期望结果:

COD
TPP
PHONE
SMS@TELL
TEXT

用户尝试的语句未达到预期:

substr(cod, 1, instr(cod, regexp_replace(cod, '[^0-9]','')))

正确实现方案

方法1:使用regexp_extract(推荐)

利用正则正向预查匹配到第一个数字前的内容:

SELECT 
  regexp_extract(COD, '^(.*?)(?=\\d|$)', 1) AS extracted_COD
FROM your_table;
  • ^:锚定字符串起始位置
  • (.*?):非贪婪模式捕获任意字符,避免过度匹配
  • (?=\\d|$):正向预查,遇到第一个数字(\\d)或字符串结尾($)时停止,该部分不纳入结果
  • 参数1:提取第一个捕获组的内容

方法2:使用regexp_replace

替换掉从第一个数字开始到结尾的所有内容:

SELECT 
  regexp_replace(COD, '\\d.*$', '') AS extracted_COD
FROM your_table;
  • \\d.*$:匹配第一个数字及后续所有字符
  • 用空字符串替换匹配到的部分,剩余内容即为目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:02:11