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

如何在Redshift表中统计字符串中||的出现次数(不用替换法)

Redshift中统计字符串里||出现次数的正则解决方案

问题根源

|是正则表达式的分支匹配元字符,直接在REGEXP_COUNT中传入'||'或'|'时,会被正则引擎解析为特殊语法,无法匹配字面意义上的|字符,自然得不到正确的连续||计数结果。

可行解决方案

以下几种方法无需替换原字符串,直接通过正则匹配即可得到正确结果:

  1. 转义元字符
    在正则中用\转义|,由于SQL字符串中\本身需要转义(写成\\),因此最终正则表达式为'\\|\\|':
REGEXP_COUNT(dcsis.value, '\\|\\|')

Redshift会将字符串中的\\解析为单个\,正则引擎接收到的是\|,代表字面的|,两个连起来就能精准匹配连续的||。

  1. 使用字符类匹配
    将|放入正则字符类[]中,此时元字符会失去特殊意义,可直接匹配字面|。可以写成两个字符类连写,或用量词{2}简化:
-- 写法1:两个字符类连写
REGEXP_COUNT(dcsis.value, '[|][|]')
-- 写法2:用量词匹配连续2个|,更简洁
REGEXP_COUNT(dcsis.value, '[|]{2}')
  1. 结合chr()与正则量词
    利用chr(124)生成|字符,配合正则量词{2}指定匹配连续两次,避免直接写|带来的元字符问题:
REGEXP_COUNT(dcsis.value, '(' || chr(124) || '){2}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:20:19