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

如何在BigQuery中提取列内以‘ - ’分隔的第二个子串?

BigQuery 对应 MySQL SUBSTRING_INDEX 的字符串提取语句

需求说明

现有数据:

id  val
1   ajkdks - jkdj
2   djs - djsd

需要提取val字段中" - "分隔后的第二个值,得到结果:

id val
1  jkdj
2  djsd

已知MySQL中使用以下语句实现:

SUBSTRING_INDEX(SUBSTRING_INDEX(val, " - ", 2)," - ",-1)

BigQuery 实现方式

方法1:使用 SPLIT 函数

BigQuery的SPLIT函数可将字符串按指定分隔符拆分为数组,直接取数组的第二个元素(BigQuery数组索引从1开始):

SELECT
  id,
  SPLIT(val, " - ")[OFFSET(1)] AS val
FROM
  your_table_name

方法2:使用 REGEXP_EXTRACT 函数

若分隔符格式固定,可通过正则匹配提取分隔符后的内容:

SELECT
  id,
  REGEXP_EXTRACT(val, r' - (.*)$') AS val
FROM
  your_table_name

方法3:模拟MySQL SUBSTRING_INDEX 逻辑

如果想完全对应MySQL的嵌套调用逻辑,也可以用正则组合实现,但写法相对繁琐,仅作参考:

SELECT
  id,
  REGEXP_EXTRACT(
    REGEXP_REPLACE(val, r'(.* - ){2}.*', r'\1'),
    r' - (.*)$'
  ) AS val
FROM
  your_table_name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:35:25