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

在BigQuery中遍历记录提取多条用户评论的可行方法

解决多条评论内容提取的SQL方案

问题分析

原SQL仅能处理单条[用户名]评论内容格式的记录,因为它只截取第一个]之后的内容。当存在多条评论拼接(如[用户A]同意[用户B]已处理)时,后续的[用户B]标记会被保留在结果中,导致提取失效。

可行解决方案

使用正则表达式替换一次性移除所有[用户名]格式的前缀,适用于绝大多数支持正则的SQL方言:

示例SQL(MySQL 8.0+/BigQuery/Hive等)

SELECT 
  approver_comments_txt AS f0,
  -- 移除所有[xxx]格式的片段,再清理前后空格
  TRIM(REGEXP_REPLACE(approver_comments_txt, '\\[.*?\\]', '')) AS f1
FROM tbl_name

正则说明

  • \\[ 和 \\]:转义正则中的特殊字符[和],确保匹配字面量
  • .*?:非贪婪匹配,避免将多个[用户名]片段合并匹配(防止把[A]xxx[B]误匹配成整个长片段)
  • TRIM():清理替换后可能出现的前后空格

兼容旧版SQL(无正则支持场景)

如果你的SQL环境不支持正则,可以使用嵌套替换临时处理,但这种方法仅适用于固定数量的评论,扩展性差。例如处理最多2条评论的情况:

SELECT 
  approver_comments_txt AS f0,
  TRIM(
    REPLACE(
      SUBSTR(approver_comments_txt, STRPOS(approver_comments_txt, ']') + 1),
      SUBSTR(approver_comments_txt, STRPOS(approver_comments_txt, '[', STRPOS(approver_comments_txt, ']')), STRPOS(approver_comments_txt, ']', STRPOS(approver_comments_txt, ']') + 1) - STRPOS(approver_comments_txt, '[', STRPOS(approver_comments_txt, ']')) + 1),
      ''
    )
  ) AS f1
FROM tbl_name

注意:这种方法仅作应急,优先推荐正则方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:11:11