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

如何用BigQuery SQL识别字符串中连续5次及以上的相同数字

BigQuery SQL识别连续5次及以上相同数字的解决方案

要实现这个需求,正确的正则表达式需利用捕获组+反向引用,匹配一个数字后连续重复4次及以上(加上捕获的那1次,总共5次或更多)。

正确的SQL表达式

REGEXP_CONTAINS(mycolumn, r'(\d)\1{4,}')

你之前的表达式无效原因

  • regexp_contains(mycolumn,r'[0-9]\\1{4}'):[0-9]未定义捕获组,\1无法引用任何匹配内容,表达式完全不生效。
  • regexp_contains(mycolumn,r'(\d)*(\d){4}'):仅匹配“任意数量数字+4个数字”,不要求数字相同,只要字符串含4个以上数字就返回true,不符合需求。
  • REGEXP_CONTAINS(mycolumn, '')), r'(\d)1{4}'):匹配一个数字后跟固定的4个1,不是匹配与前面相同的数字,逻辑错误。
  • regexp_contains(mycolumn,r'(\d){4}'):仅匹配连续4个数字,既不要求数字相同,也不满足“5次及以上”的条件。

测试示例验证

用你提供的测试数据验证(注:你标记的AAAAAB为true应为笔误,该字符串不含数字,按需求应返回false):

字符串结果
AAAAABfalse
BBBBAAfalse
111111true
01010101010101false

完整查询示例

WITH test_data AS (
  SELECT 'AAAAAB' AS mycolumn UNION ALL
  SELECT 'BBBBAA' UNION ALL
  SELECT '111111' UNION ALL
  SELECT '01010101010101'
)
SELECT
  mycolumn,
  REGEXP_CONTAINS(mycolumn, r'(\d)\1{4,}') AS has_consecutive_five_digits
FROM test_data;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:45:26