PostgreSQL中统计指定字符或者单词或者字符串在一个长字符串中出现总次数,PostgreSQL统计字符串中某字符出现次数

it2023-06-07  73

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 ;

select array_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
最新回复(0)