我想计算一个值在字符串中出现的次数
I want to count the number of occurences of a value in a string
给定一个列,即 a
,它是 array_to_string(array(some_column))
的结果,我如何计算其中值的出现次数?
假设我有 '1,2,3,3,4,5,6,3'
作为列的值。
如何获取值 '3'
的出现次数?
看来你需要使用 unnest.
试试这个:
select idTable, (select sum(case x when '3' then 1 else 0 end)
from unnest(a) as dt(x)) as counts
from yourTable;
为什么不创建一个 for 循环 () 并在 if/else 语句中递增一个变量 i 每当值 == 3
for(var i =0; i<intArray.length;i++){
if(int[i] = 3){
var j += 1;
}
}
类似的东西,希望你明白了。
我自己解决了。谢谢你的所有想法!
SELECT count(something)
FROM unnest(
string_to_array(
'1,2,3,3,4,5,6,3'
, ',')
) something
WHERE something = '3'
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)
给定一个列,即 a
,它是 array_to_string(array(some_column))
的结果,我如何计算其中值的出现次数?
假设我有 '1,2,3,3,4,5,6,3'
作为列的值。
如何获取值 '3'
的出现次数?
看来你需要使用 unnest.
试试这个:
select idTable, (select sum(case x when '3' then 1 else 0 end)
from unnest(a) as dt(x)) as counts
from yourTable;
为什么不创建一个 for 循环 () 并在 if/else 语句中递增一个变量 i 每当值 == 3
for(var i =0; i<intArray.length;i++){
if(int[i] = 3){
var j += 1;
} }
类似的东西,希望你明白了。
我自己解决了。谢谢你的所有想法!
SELECT count(something)
FROM unnest(
string_to_array(
'1,2,3,3,4,5,6,3'
, ',')
) something
WHERE something = '3'
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)