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

Snowflake/SQL按条件拆分字符串:保留最后分隔符前内容

解决方案

方法1:使用REVERSE + SPLIT_PART(逻辑直观,推荐)

通过反转字符串拆分后再还原的思路,同时兼容无下划线的边界场景:

SELECT 
    col1,
    NVL(REVERSE(SPLIT_PART(REVERSE(col1), '_', 2)), col1) AS target_result
FROM your_table;

逻辑说明:

  • REVERSE(col1):将原字符串反转,例如abc_def_xyz转为zyx_fed_cba
  • SPLIT_PART(..., '_', 2):按下划线拆分反转后的字符串,取第2段(对应原字符串最后一个下划线之前的内容反转结果)
  • REVERSE(...):将拆分得到的内容反转回原顺序,得到目标结果
  • NVL(..., col1):若原字符串无下划线,SPLIT_PART返回null,此时直接返回原字符串

方法2:使用REGEXP_REPLACE(正则方式)

通过正则匹配最后一个下划线及后续内容并替换为空,无需额外处理无下划线场景:

SELECT 
    col1,
    REGEXP_REPLACE(col1, '_[^_]*$', '') AS target_result
FROM your_table;

逻辑说明:

  • 正则_[^_]*$的含义:
    • _:匹配单个下划线
    • [^_]*:匹配任意数量的非下划线字符
    • $:匹配字符串结尾
  • 整个正则会精准匹配最后一个下划线及其后的所有内容,替换为空后即得到目标部分;若原字符串无下划线,正则匹配失败,直接返回原字符串

测试验证

针对不同输入场景的输出结果:

  • 输入abc_def → 输出abc
  • 输入abc_def_xyz → 输出abc_def
  • 输入abc → 输出abc
  • 输入a_b_c_d → 输出a_b_c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:06:01