我正在尝试过滤掉所有数字都相同的数字 - 例如“000000000”,“111111111111”等。 我希望可以在雪花中使用 REGEXP_LIKE 来完成。 但它不起作用。
这些是我尝试测试的内容: 选择 案件 当 REGEXP_LIKE(列, '^[0-9] +$') 那么 '0' 其他'1' 结尾为 D;
尝试添加更多反斜杠来解决转义序列问题。仍然没有给我想要的输出。
您可以使用以下解决方案,这会更可靠且可定制
with data as (
select '1111111' num
union
select '0000000' num
union
select '1234' num
)
select *
,case when array_size(ARRAY_DISTINCT(regexp_extract_all(num,'.'))) = 1 THEN '0' ELSE '1' END AS D
from data
;
关闭。所需的正则表达式的形式为
^([0-9])\1+$
。圆括号是获取第一个数字的捕获组。然后,\1+
表示捕获组 1 中的一个或多个内容。
不熟悉 SQL,因此反斜杠可能需要加倍,因此:
^([0-9])\\1+$
。