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

Teradata中用STRTOK_SPLIT_TO_TABLE实现复合键列拆分

在Teradata中使用STRTOK_SPLIT_TO_TABLE处理复合键拆分多行

由于STRTOK_SPLIT_TO_TABLE仅支持单个键参数,我们可以将多个键列拼接成唯一字符串作为传入键,拆分完成后再将该字符串拆分回原键列。具体实现如下:

解决方案步骤

  1. 选择一个不会出现在键列值中的分隔符(例如|或不可见字符CHR(1)),将id1和id2拼接为单一键字符串。
  2. 将拼接后的键、待拆分列和空格分隔符传入STRTOK_SPLIT_TO_TABLE。
  3. 在查询结果中,使用SPLIT_PART函数将组合键拆分回原始的id1和id2列。

完整SQL示例

假设你的源表名为your_table,执行以下代码即可得到期望输出:

SELECT
    -- 拆分组合键,还原原始id1和id2
    CAST(SPLIT_PART(d.outkey, '|', 1) AS INT) AS id1,
    SPLIT_PART(d.outkey, '|', 2) AS id2,
    d.token AS new_col
FROM your_table t
CROSS JOIN TABLE (
    STRTOK_SPLIT_TO_TABLE(
        -- 拼接id1和id2为单一键,使用|作为分隔符
        CAST(t.id1 AS VARCHAR(10)) || '|' || t.id2,
        t.col_to_be_split,
        ' '  -- 待拆分列的分隔符(空格)
    ) RETURNS (
        outkey VARCHAR(50),  -- 需足够容纳拼接后的键字符串
        tokennum INTEGER,
        token VARCHAR(20) CHARACTER SET UNICODE
    )
) AS d;

注意事项

  • 如果id1或id2的值中可能包含|,请替换为其他不会冲突的分隔符(例如CHR(1),ASCII控制字符SOH),避免拆分错误。
  • 根据实际数据类型和长度,调整outkey的定义长度以及id1的转换类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:12:13