MySQL

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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *