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

Teradata SQL拆分含列名与值的冒号分隔字符串并实现行转列

Teradata 拆分冒号键值对实现行转列SQL方案

现有Teradata数据库中的t1表存储冒号分隔的键值对数据,Value字段内容为「列名:对应值」格式,需拆分后将键作为输出列名、对应值作为列内容输出。

样例输入表(t1)

IDValue
1animal:horse
2animal:cow
3bird:parrot
4bird:sparrow

期望输出格式

IDanimalbird
1horse
2cow
3parrot
4sparrow

实现代码

SELECT 
  ID,
  MAX(CASE WHEN key = 'animal' THEN val ELSE '' END) AS animal,
  MAX(CASE WHEN key = 'bird' THEN val ELSE '' END) AS bird
FROM (
  -- 拆分Value字段为键、值两部分
  SELECT 
    ID,
    STRTOK(Value, ':', 1) AS key,
    STRTOK(Value, ':', 2) AS val
  FROM t1
) t
GROUP BY ID
ORDER BY ID;

若使用的Teradata版本不支持STRTOK函数,可替换拆分逻辑为INSTR+SUBSTRING组合:

SUBSTRING(Value FROM 1 FOR INSTR(Value,':')-1) AS key,
SUBSTRING(Value FROM INSTR(Value,':')+1) AS val

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:36:01