MySQL: Como contar itens de uma coluna separados por vírgula
// criando a tabela CREATE TABLE MinhaTabela ( id INT AUTO_INCREMENT PRIMARY KEY, eventos_id TEXT ); // inserindo dados na tabela INSERT INTO MinhaTabela (id, eventos_id) VALUES (NULL, '220,226,222,215'); INSERT INTO MinhaTabela (id, eventos_id) VALUES (NULL, '4,12,22,23,45,125'); // Esse comando SQL realiza uma operação de subtração e soma e atribui o valor a coluna chamada total, derivada de uma subconsulta SELECT SUM(total) as totalItens FROM ( SELECT (CHAR_LENGTH(eventos_id) - CHAR_LENGTH(REPLACE(eventos_id, ',', '')) + 1) as total FROM MinhaTabela WHERE id = 1 ) tab1; |
Explicando:
CHAR_LENGTH(eventos_id)
Retorna o comprimento da string na coluna eventos_id, que será 15
15 caracteres -> “220,226,222,215”
CHAR_LENGTH(REPLACE(eventos_id, ‘,’, ”))
Retorna o comprimento da string na coluna eventos_id sem as vírgulas, que será 12
12 caracteres -> “220226222215”
(CHAR_LENGTH(eventos_id) – CHAR_LENGTH(REPLACE(eventos_id, ‘,’, ”)) + 1)
A diferença entre os comprimentos originais e o comprimento após a remoção das vírgulas nos dá o número de vírgulas presentes
Adicionamos 1 para contar o número total de valores separados por vírgulas