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

Spark SQL中是否有等价于Redshift REGEXP_COUNT的函数?

Spark SQL 实现类似 Redshift REGEXP_COUNT 的功能

Spark SQL 没有与 Redshift 的REGEXP_COUNT完全同名的内置函数,但可以通过现有函数组合实现统计子字符串出现次数的需求,以下是两种常用方法:

方法一:使用 split + size

这是最通用的方法,适用于任意正则表达式匹配的子串:

SELECT size(split('1->2->3->456', '->')) - 1 AS regexp_count_result;

执行后返回结果为3,与你需要的效果一致。
原理:split函数会将原字符串按匹配的子串拆分,拆分后的数组长度减去1,就是子串出现的次数。

方法二:使用 regexp_replace + length(适用于固定长度子串)

如果待统计的子串是固定长度的,可以用这种方式:

SELECT length(regexp_replace('1->2->3->456', '[^->]', '')) / 2 AS regexp_count_result;

这里'->'长度为2,所以用处理后的字符串长度除以2得到次数。注意这种方法仅适用于子串长度固定的场景,且需要注意正则表达式的转义问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:20:41