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

如何在Hive表中按最后一个连字符拆分单列?

在Hive中按最后一个连字符拆分name列并新增new_name列

这里提供两种高效的HiveQL实现方式,满足你拆分最后一个-后提取后缀的需求:

方法1:利用反转+拆分+反转组合

这种方法逻辑直观,适合处理任意数量连字符的场景:

SELECT 
    name,
    age,
    reverse(split(reverse(name), '-')[0]) AS new_name
FROM your_table;

逻辑说明:

  1. reverse(name):将原字符串反转,比如a-b-c-d_b反转后变成b_d-c-b-a
  2. split(..., '-'):用-拆分反转后的字符串,得到数组["b_d", "c", "b", "a"]
  3. 取数组第一个元素"b_d",再通过reverse()转回来,最终得到d_b

方法2:利用字符串截取+位置计算

这种方法通过计算最后一个-的位置直接截取,性能更优:

SELECT 
    name,
    age,
    substr(name, length(name) - instr(reverse(name), '-') + 2) AS new_name
FROM your_table;

逻辑说明:

  1. instr(reverse(name), '-'):找到反转后第一个-的位置,对应原字符串最后一个-到末尾的长度
  2. length(name) - instr(...) + 1:计算出原字符串中最后一个-的索引位置
  3. substr(name, ... + 2):从最后一个-的下一位开始截取,得到目标后缀

示例验证

输入表数据:

nameage
a-b-c-d_b22
d-e-f-g_e44

执行上述任意SQL后,输出结果:

nameagenew_name
a-b-c-d_b22d_b
d-e-f-g_e44g_e

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:23