I am running a query where I used GROUP_CONCAT() and now I want to know the length of this array. I used LENGTH(), however, this shows the number of characters in the row. Should I even use GROUP_CONCAT() in the first place?
The results I am expecting:
| Id | GROUP_CONACT() | LENGTH |
|---|---|---|
| 1 | A, B | 2 |
| 2 | C, D | 2 |
| 3 | E, F, G | 3 |
| 4 | A, D | 2 |
| 5 | A, B, D, E, G | 5 |
CodePudding user response:
I think what you are trying to achieve is counting the number of occurrence of ',' 1: Use
ROUND (
(
LENGTH(concated)-LENGTH(REPLACE(concated, ",", "")))/LENGTH(",") 1
) AS COUNT
Replace concated to your GROUP_CONCAT
CodePudding user response:
I don't see why you can't just use the COUNT() function, e.g.:
item | accessory
1 | a
1 | b
1 | c
2 | d
2 | e
SELECT item,
GROUP_CONCAT(accessory) AS accessories, -- the CSV string
COUNT(*) AS num_accessories -- the "size" of the array
FROM yourTable
GROUP BY item;
