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

Snowflake:如何过滤所有数位相同的数字?

问题分析与解决方法

你的正则写法存在两个核心问题,导致无法匹配全相同数位的数字:

  1. 第一个数字未被标记为捕获组,\\1无法引用到前面匹配的数字。[0-9]只是字符类匹配单个数字,没有创建可引用的捕获组;
  2. Snowflake的SQL字符串中反斜杠需要转义,需确保反向引用和正则元字符的转义正确。

正确写法1:常规转义

SELECT
  CASE
    WHEN REGEXP_LIKE(column_name, '^(\\d)\\1+$') THEN '0'
    ELSE '1'
  END AS D
FROM your_table;

正则逻辑说明:

  • ^ 匹配字符串开头
  • (\\d) 捕获第一个数字(\\d等价于[0-9]),创建第一个捕获组
  • \\1+ 重复匹配与第一个捕获组完全相同的数字(至少1次)
  • $ 匹配字符串结尾

正确写法2:RAW字符串(更简洁)

Snowflake支持在字符串前加r启用RAW模式,避免额外转义:

SELECT
  CASE
    WHEN REGEXP_LIKE(column_name, r'^(\d)\1+$') THEN '0'
    ELSE '1'
  END AS D
FROM your_table;

这种写法里的\1无需额外转义,直接引用捕获组即可,可读性更高。

内容的提问来源于stack exchange,提问作者Aswin S P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:02:41