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

如何在BigQuery中将含分隔符的单列拆分为指定多列?

可以用REG EXTRACT实现指定字符串拆分吗?

完全可以实现。你的字符串是用#作为固定分隔符的结构化内容,通过正则捕获组就能精准提取每个目标字段。以下是针对各字段的具体实现方式(以常见的SQL正则提取函数为例,比如BigQuery的REG_EXTRACT):

  • 提取Device(Android):
    正则匹配第一个#之后、第二个#之前的内容:

    REG_EXTRACT(your_column, r'^[^#]+#([^#]+)#.*')
    
  • 提取Country(US):
    跳过前两个#分隔的内容,捕获第三个部分:

    REG_EXTRACT(your_column, r'^[^#]+#[^#]+#([^#]+)#.*')
    
  • 提取Age(13-21):
    跳过前三个#分隔的内容,捕获第四个部分:

    REG_EXTRACT(your_column, r'^[^#]+#[^#]+#[^#]+#([^#]+)#.*')
    
  • 提取UserName(JohnDoe):
    跳过前四个#分隔的内容,捕获第五个部分:

    REG_EXTRACT(your_column, r'^[^#]+#[^#]+#[^#]+#[^#]+#([^#]+)#.*')
    
  • 提取Gender(Male):
    跳过前五个#分隔的内容,捕获最后一个部分(用$锚定结尾避免匹配多余内容):

    REG_EXTRACT(your_column, r'^[^#]+#[^#]+#[^#]+#[^#]+#[^#]+#([^#]+)$')
    

正则逻辑说明

  • [^#]+:匹配任意数量的非#字符,用来定位每个分隔段的内容
  • ^:锚定字符串开头,确保从最开始匹配
  • $:锚定字符串结尾,确保只匹配最后一段内容
  • ():捕获组,将我们需要的字段内容提取出来

如果你的工具(比如Excel、Python的re模块)正则语法略有差异,核心思路不变——通过分隔符#定位目标字段的位置,用捕获组提取对应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:41:22