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

求助:在Google BigQuery中按规则拆分字符串为指定三列的SQL语法

GoogleSQL 查询方案

针对你的需求,用正则表达式函数就能精准拆分这三列,以下是适配你示例数据的查询语句:

WITH sample_data AS (
  SELECT 'Male_Bob_1' AS Data UNION ALL
  SELECT 'Female_Jenny_2' UNION ALL
  SELECT 'Female_Brittany' UNION ALL
  SELECT 'New_Male_Henry_8' UNION ALL
  SELECT 'Backup_Male_Henry_33' UNION ALL
  SELECT 'Backup_Female_Jane_304' UNION ALL
  SELECT 'Loaned_Male_John_9'
)
SELECT
  Data,
  -- 提取Male/Female之前的前缀,无前缀则返回NULL
  REGEXP_EXTRACT(Data, r'^(.*?)_(Male|Female)') AS Prefix,
  -- 提取末尾的数字后缀,无数字则返回NULL
  REGEXP_EXTRACT(Data, r'_(\d+)$') AS Suffix,
  -- 提取去掉前缀和后缀后的Base内容
  REGEXP_EXTRACT(Data, r'(Male|Female.*?)(?:_\d+)?$') AS Base
FROM sample_data;

各列逻辑解释:

  • Prefix列:用REGEXP_EXTRACT匹配字符串开头到_Male或_Female之前的部分,只有当字符串里存在xxx_Male/xxx_Female结构时才会返回前缀,否则返回NULL,适配无前缀的场景。
  • Suffix列:匹配字符串末尾的_数字格式,提取其中的数字,没有该结构时自动返回NULL。
  • Base列:直接匹配从Male或Female开始,到末尾数字(如果存在)之前的所有内容,自动跳过前面的前缀和后面的数字后缀,一步到位得到目标内容。

测试这个查询会和你给出的示例结果完全一致,同时能处理各种边界场景(比如无前缀、无后缀、多字符前缀/多位数后缀)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:44:59