一、背景
1、查询regexp_count 函数提示未注册
用户想正则查询特定字符出现次数
function regexp_count not registered
二、调研
1、官网地址:
Presto Documentation — Presto 0.284 Documentation
2、regexp_extract_all
Regular Expression Functions — Presto 0.284 Documentation
对字典正则处理,获取全量数组
SELECT regexp_extract_all('1a 2b 14m', '(\d+)([a-z]+)', 2); -- ['a', 'b', 'm']
注意这里查询结果是数组
3、cardinality
Array Functions and Operators — Presto 0.284 Documentation
我们需要获取上面正则处理完成的数组长度
SELECT cardinality(regexp_extract_all('1a 2b 14m', '(\d+)([a-z]+)', 2));
三、实现
获取字符中 ”,“ 数量
SELECT
live_learn_interval,
regexp_extract_all(live_learn_interval,','),
cardinality(regexp_extract_all(live_learn_interval,','))
FROM db_a.tb_b
WHERE dt ='20240115' limit 10