PostgreSQL中统计指定字符或者单词或者字符串在一个长字符串中出现总次数,PostgreSQL统计字符串中某字符出现次数
- pg自带函数的方式
- 另外一种思路方式,字符替换,统计被替换的字符数
- 函数 translate(string text, from text, to text)
pg自带函数的方式
使用字符串转数组(将需要计算出现次数的字符串作为SPLIT字符),再求数组个数减一,得到这个字符串或字符的出现次数
select array_length(regexp_split_to_array('
\u5206\u4EAB\u6570\u636E\u5E93\u524D\u6CBF\uFF0C\u89E3\u6784
\u5B9E\u6218\u5E72\u8D27\uFF0C\u63A8\u52A8\u6570\u636E\u5E93
\u6280\u672F\u53D8\u9769groupCodedatabasegroupDesc\u6211\u4EEC
\u627F\u8F7D\u4E86\u963F\u91CC\u4E91\u3001\u963F\u91CC\u5DF4
\u5DF4\u96C6\u56E2\u6240\u6709\u5728\u7EBF\u6570\u636E\u4EE5
\u53CA\u6570\u636E\u670D\u52A1\uFF0C\u63D0\u4F9B\u4ECE\u5728
\u7EBF\u4E8B\u7269\u5904\u7406\u5230\u5728\u7EBF\u5206\u6790
\u5904\u7406\u7684\u5168\u6808\u6570\u636E\u5E93\u4EA7\u54C1
\u548C\u670D\u52A1\uFF0C\u652F\u6301\u516C\u5171\u4E91\u3001
\u4E13\u6709\u4E91\u5404\u79CD\u73AF\u5883\u4E0B\u7684\u7075
\u6D3B\u90E8\u7F72\uFF0C\u6EE1\u8DB3\u4ECE\u4E2A\u4EBA\u5F00
\u53D1\u8005\u3001\u4E2D\u5C0F\u4F01\u4E1A\u5230\u5168\u7403
\u5927\u89C4\u6A21\u4F01\u4E1A\u4E1A\u52A1\u3002\n\n\u5728\u6570
\u636E\u5E93\u5B58\u50A8\u5F15\u64CE\u3001\u4E91\u539F\u751F
\u6280\u672F\u3001\u5206\u6790\u5F15\u64CE\u3001\u5206\u5E03
\u5F0F\u5904\u7406\u3001FPGA/GPU\u786C\u4EF6\u52A0\u901F\u3001
\u667A\u80FD\u6570\u636E\u5E93\u3001\u667A\u80FD\u5316\u7BA1
\u63A7\u5E73\u53F0\u3001\u5B89\u5168\u6570\u636E\u5E93\u7B49
\u65B9\u9762\uFF0C\u963F\u91CC\u4E91\u6570\u636E\u5E93\u90FD
\u5904\u4E8E\u5168\u7403\u9886\u5148\u4F4D\u7F6E\uFF0C\u5168
\u9762\u7684\u4E91\u4EA7\u54C1\u548C\u670D\u52A1\u7EC4\u5408
\uFF0C\u4E3A\u963F\u91CC\u4E91\u5BA2\u6237\u4EE5\u53CA\u963F
\u91CC\u5DF4\u5DF4\u96C6\u56E2\u7684\u591A\u5143\u5316\u4E1A
\u52A1\u63D0\u4F9B\u4E86\u4E30\u5BCC\u7684\u6570\u636E\u5E93
\u4EA7\u54C1\u89E3\u51B3\u65B9\u6848\u548C\u884C\u4E1A\u7ECF\u9A8C\u3002'
,'\\'),1)-1 ;
selectarray_length(regexp_split_to_array(' [{"detectResult":"","datetime":"1603174786605","watermark":"","source":"d45c6059-f481-4a9e-a8c4-546b9ec1a3b2.jpg"},{"detectResult":"","datetime":"1603174792122","watermark":"","source":"43ce4079-8975-4583-8be2-5c98601dfce9.jpg"}]', 'source'), 1)-1
as count;
另外一种思路方式,字符替换,统计被替换的字符数
select length('ffffff') - length(replace('ffffff','f','')) as result
函数 translate(string text, from text, to text)
类型 | 说明 |
---|---|
函数 | translate(string text, from text, to text) |
返回类型 | text |
描述 | string中任何匹配from集合中一个字符的字符会被替换成to集合中的相应字符。如果from比to长,from中的额外字符会被删除。 |
例子 | translate(‘12345’, ‘143’, ‘ax’) |
结果 | a2x5 |