so given the table:
id | names
===============
1 {John, , Wayne}
2 {Luke, Harold, }
3 {Bill}
4 {Will, , }
They don’t have a standard and some values may come empty ( for example {Will, , }). I tried:
SELECT array_length(names, 1) FROM nameTable
But I get this:
names ====== 3 3 1 3
and I want it to return:
names ====== 2 2 1 1
So I need something which gives me the length only of the populated fields (empty spaces like ‘ ‘) shouldn’t be counted.
Advertisement
Answer
You can remove the NULL values and then count:
array_length(array_remove(names, NULL), 1)
For one-dimensional arrays, I find that cardinality() is convenient:
cardinality(array_remove(names, NULL))