PostgreSQL数据库统计某字符出现次数的新奇思路

统计某个字符出现的次数,本示例是统计逗号出现的次数:

由于照片字段是支持上传多张照片的,上传多张后会自动用逗号隔开,所以思路是数逗号出现的次数达到计数的目的。

select 

id, length(ca.photo) - length(translate(ca.photo,',',''))+1 as 照片数量

from call as ca

 

其中translate函数的解释如下:

select translate('她真是好看', '好看','哈哈哈')

结果是:她真是哈哈哈

 

参考此思路,把出现的逗号全部替换为空,然后长度之差即为出现的次数。

 

源表:

idphoto
1111["2019-08-06qFu8", "2019-08-06aHu0"]
2222["2019-08-06g6ZB"]
3333 

运行结果:

id照片数量
11112
22221
3333 

另一种写法是,参考自(https://blog.csdn.net/doupeihua/article/details/37566157):

select

id, LENGTH(TRANSLATE(ca.ext->>'photo_for_business_review',','::text||(ca.ext->>'photo_for_business_review'::text),',')) + 1,

from call ca

注意一定要转化为text之后再操作。

一、语法:   
    TRANSLATE(string,from_str,to_str)   
二、目的   
      返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE   是   REPLACE   所提供的功能的一个超集。如果   from_str   比   to_str   长,那么在   from_str   中而不在   to_str   中的额外字符将从   string   中被删除,因为它们没有相应的替换字符。to_str   不能为空。Oracle   将空字符串解释为   NULL,并且如果TRANSLATE   中的任何参数为NULL,那么结果也是   NULL。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值