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

如何在Snowflake中将文本列拆分为每个单词占一行的新表

Snowflake文本按空格拆分为多行实现方案

你之前用REPLACE函数无法实现需求的原因是REPLACE仅用于字符内容替换,不支持行转列操作,你需要使用拆分函数结合侧展函数实现效果。

实现代码

假设你的源表名为source_table,可直接执行以下SQL:

SELECT 
  TRIM(f.value) AS word,
  t.date,
  t.ID
FROM 
  source_table t,
  LATERAL FLATTEN(input => SPLIT(t.text, ' ')) f
ORDER BY 
  t.ID, f.index;

逻辑说明

  • SPLIT(t.text, ' '):将text字段按空格切割为数组,例如文本I am the one会被处理为["I", "am", "the", "one"]
  • LATERAL FLATTEN:将数组中的每个元素拆分为独立行,返回的f.value即为单个单词,f.index为单词在原文本中的顺序索引
  • TRIM():用于过滤单词前后的空白字符,避免源文本存在连续空格时生成空值行
  • ORDER BY:保证拆分后的单词顺序和原文本中的顺序一致

优化方案(适配多空白场景)

如果源文本存在多个连续空格、制表符等混合空白分隔的情况,可使用STRTOK_SPLIT_TO_TABLE函数自动忽略连续空白,实现更稳定的拆分:

SELECT 
  TRIM(s.value) AS word,
  t.date,
  t.ID
FROM 
  source_table t,
  TABLE(STRTOK_SPLIT_TO_TABLE(t.text, ' ')) s
ORDER BY 
  t.ID, s.index;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:57:04