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

Teradata如何按' - '分隔符拆分字符串实现Presto split_part效果

Teradata 按多字符分隔符拆分字符串解决方案

方案1:使用REGEXP_SUBSTR(推荐,高版本Teradata适用)

直接通过正则匹配实现类split_part功能,无需嵌套,可精准识别-三字符分隔符,自动忽略字段内部的无空格连字符:

  • 通用语法(提取第n个分段,n从1开始计数):
REGEXP_SUBSTR(目标列名, '(.*?)( - |$)', 1, n, '', 1)
  • 示例测试(提取示例字符串的第二个分段Target):
REGEXP_SUBSTR('Wal-Mart - Target - Best Buy - K-Mart - Staples', '(.*?)( - |$)', 1, 2, '', 1)
  • 逻辑说明:正则用非贪婪匹配(.*?)捕获每个分段内容,匹配到-分隔符或字符串末尾时停止,最后返回第一个捕获组的内容即为目标分段。

方案2:替换分隔符后用STRTOK拆分(兼容低版本Teradata)

如果你的Teradata版本不支持正则捕获组参数,可以先把三字符分隔符替换为原始数据中不存在的单字符,再用原生STRTOK拆分:

  • 通用语法(提取第n个分段,以罕见字符^作为中转分隔符为例):
STRTOK(OREPLACE(目标列名, ' - ', '^'), '^', n)
  • 示例测试:
STRTOK(OREPLACE('Wal-Mart - Target - Best Buy - K-Mart - Staples', ' - ', '^'), '^', 2)
  • 注意事项:需确保中转用的单字符不会出现在你的业务原始字符串中,避免误拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:36:03