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

如何使用Conditional Split提取字符串列键值对生成独立字段

实现方案

方案1:SSIS环境下结合派生列+条件拆分实现

  • 第一步:统一预处理字符串列,使用派生列组件清理格式,表达式为:REPLACE(TRIM([String column]), ". ", "|"),如果字符串结尾存在残留的.可额外加判断移除,统一键值对的分隔格式。
  • 第二步:针对已知的所有键(A/B/C/D),分别在派生列中写提取逻辑,无需提前拆分全字符串,直接通过定位键的位置截取对应值,以A列提取为例,表达式如下:
FINDSTRING([String column], "A:", 1) == 0 ? "" : 
TRIM(
  SUBSTRING(
    [String column],
    FINDSTRING([String column], "A:", 1) + 2,
    CASE 
      WHEN FINDSTRING(SUBSTRING([String column], FINDSTRING([String column], "A:", 1) + 2, LEN([String column])), ".", 1) == 0 
      THEN LEN(SUBSTRING([String column], FINDSTRING([String column], "A:", 1) + 2, LEN([String column])))
      ELSE FINDSTRING(SUBSTRING([String column], FINDSTRING([String column], "A:", 1) + 2, LEN([String column])), ".", 1) - 1
    END
  )
)

依次把表达式中的A:替换为B:、C:、D:即可生成对应列,不存在对应键的行会自动返回空值。

  • 第三步:如果需要使用Conditional Split做分支处理,可按FINDSTRING([String column], "A:", 1) > 0这类规则设置分支条件,对应处理不同键存在的行数据。

方案2:SQL层面直接解析(适合ETL前置处理)

如果使用的数据库支持正则函数(SQL Server 2017+、MySQL 8.0+、PostgreSQL等),直接用正则提取更简单,以SQL Server为例,代码如下:

SELECT
  TRIM(REGEXP_SUBSTR([String column], 'A:([^.]*)', 1, 1, NULL, 1)) AS A,
  TRIM(REGEXP_SUBSTR([String column], 'B:([^.]*)', 1, 1, NULL, 1)) AS B,
  TRIM(REGEXP_SUBSTR([String column], 'C:([^.]*)', 1, 1, NULL, 1)) AS C,
  TRIM(REGEXP_SUBSTR([String column], 'D:([^.]*)', 1, 1, NULL, 1)) AS D
FROM 你的表名

该方法无需拆分字符串,直接匹配每个键对应的值,不存在的键自动返回空值,完全符合输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:18:03