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

如何在Amazon Marketing Cloud中获取字符串第n次出现某字符后的子串

在Amazon Marketing Cloud(兼容PostgreSQL)中提取指定分隔符第n次出现后的子串

针对你给出的示例(输入str1_str2_str3_str4,获取第二个下划线后的str3),以下是几种适配PostgreSQL语法(AMC兼容)的可行方案:

方法1:使用split_part直接提取目标部分

这是最简洁的方式,split_part可以按分隔符将字符串拆分为多个部分,直接指定索引提取:

SELECT split_part('str1_str2_str3_str4', '_', 3) AS result;
  • 参数说明:split_part(字符串, 分隔符, 目标部分索引),索引从1开始计数。这里取第3个部分,正好对应第二个下划线后的第一个子串str3。

方法2:正则表达式替换提取后续内容

如果需要先获取第二个下划线后的全部内容(比如str3_str4),再提取其中第一个子串,可以结合regexp_replace和split_part:

-- 先提取第二个下划线后的所有内容
SELECT regexp_replace('str1_str2_str3_str4', '^[^_]+_[^_]+_', '') AS full_suffix;
-- 再从结果中提取第一个子串
SELECT split_part(regexp_replace('str1_str2_str3_str4', '^[^_]+_[^_]+_', ''), '_', 1) AS result;

正则^[^_]+_[^_]+_的作用是匹配字符串开头到第二个下划线的所有内容,替换为空后得到后续部分。

通用化方案(适配任意第n次分隔符)

如果需要提取第n个下划线后的第一个子串,直接调整split_part的索引:

-- n为分隔符出现的次数,目标索引为n+1
SELECT split_part(your_column, '_', n+1) FROM your_table;

如果需要提取第n个下划线后的所有内容,用动态正则匹配:

SELECT regexp_replace(your_column, '^([^_]+_){' || n || '}', '') FROM your_table;

其中([^_]+_){n}表示重复匹配n次“非下划线字符+下划线”的组合,替换为空后得到第n个下划线后的全部内容。

以上方法基于PostgreSQL语法,在Amazon Marketing Cloud中可直接使用。

内容的提问来源于stack exchange,提问作者R.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:10:09