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

Snowflake中如何提取文本字段内'was'与'by'之间的单词

Snowflake提取was与by之间状态值的实现方法

针对给出的固定格式文本,可通过以下两种方式提取目标关键词,优先推荐正则方案,容错性更高。


方案1:正则匹配提取(推荐)

使用Snowflake内置的REGEXP_SUBSTR函数,通过捕获组直接抓取两个固定关键词中间的内容,不受手机号长度、前后空格数量变化的影响:

SELECT
  REGEXP_SUBSTR(your_text_column, 'was\\s+(\\w+)\\s+by:', 1, 1, 'e', 1) AS flag_type
FROM your_table;

参数说明:

  • \\s+ 匹配任意数量的空白字符,兼容文本中意外多打空格的场景
  • 最后一个参数1指定返回第一个捕获组的内容,也就是was和by之间的单词,可自动识别flagged/unflagged两种取值
  • 如果需要严格匹配大小写,可移除参数中的'e'配置

方案2:字符串切分提取(格式完全固定场景适用)

如果文本100%严格符合给出的样例格式,没有任何格式波动,可以用字符串拆分的方式实现,性能比正则略高:

SELECT
  TRIM(SPLIT_PART(SPLIT_PART(your_text_column, 'was', 2), 'by', 1)) AS flag_type
FROM your_table;

逻辑说明:

  • 第一次以was为分隔符切分文本,取分隔符后的第二段内容
  • 第二次以by为分隔符切分上一步的结果,取分隔符前的第一段内容
  • 最后用TRIM去除内容前后的多余空格,得到目标值

异常值兜底校验

由于目标值只有flagged/unflagged两种,可以加一层校验逻辑,标记异常格式的数据:

SELECT
  CASE
    WHEN flag_type IN ('flagged', 'unflagged') THEN flag_type
    ELSE NULL -- 异常值可按需替换为自定义标记,比如'invalid_format'
  END AS checked_flag_type
FROM (
  SELECT REGEXP_SUBSTR(your_text_column, 'was\\s+(\\w+)\\s+by:', 1, 1, 'e', 1) AS flag_type
  FROM your_table
) t;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:03:33