我想计算字符串中值的出现次数

时间:2015-04-28 03:09:18

标签: sql arrays postgresql postgresql-8.4 unnest

如果列aarray_to_string(array(some_column))的结果,我该如何计算值的出现?

假设我有'1,2,3,3,4,5,6,3'作为列的值 如何获取值'3'的出现次数?

4 个答案:

答案 0 :(得分:1)

我自己解决了。谢谢你的所有想法!

SELECT count(something)
FROM unnest(
        string_to_array(
            '1,2,3,3,4,5,6,3'
        , ',')
    ) something
WHERE something = '3'

答案 1 :(得分:0)

您似乎需要使用不需要

试试这个:

select idTable, (select sum(case x when '3' then 1 else 0 end) 
from unnest(a) as dt(x)) as counts 
from yourTable;

答案 2 :(得分:0)

为什么不只是创建一个for循环()并在if / else语句中递增变量i,以便每当值== 3

for(var i =0; i<intArray.length;i++){
     if(int[i] = 3){
     var j += 1;

} }

类似的东西,希望你能得到这个想法。

答案 3 :(得分:0)

Based on my "How do you count the occurrences of an anchored string using PostgreSQL?"

计算子字符串中出现次数的最快方法是:

SELECT length(data) - length(replace(data, '3', ''))
  / length('3')
FROM foo;

如果您使用array_to_string创建字符串,则对unnest有意义,但速度不会更快。此外,我很乐意看到完整的查询。

count(CASE WHEN some_column=3 THEN 1 END)

听起来最快,或者如果你升级到新版本的PostgreSQL ..

count(*) FILTER (WHEN some_column=3)