SELECT ifnull(LENGTH(GROUP_CONCAT(varchar SEPARATOR ',')) - LENGTH(REPLACE(GROUP_CONCAT(varchar SEPARATOR ','), ',', '')) + 1,0) AS total
FROM tablename
WHERE date(date and time)=curdate()
varchar此列包含以逗号分隔的值,我在列中精确计算逗号分隔值但不适用于大数据。
是否有任何解决方案可以计算没有长度问题
答案 0 :(得分:1)
您可能达到group_concat_max_len的限制 - 这意味着超过(默认情况下)1024个字符的任何内容都会被截断,因此您无法获得所有结果。
可能的解决办法是计算每行的项目数和总计行数。
SELECT SUM(ifnull(LENGTH(varchar) - LENGTH(REPLACE(varchar, ',', '')) + 1,0)) AS total
FROM tablename
WHERE date(date and time)=curdate()
这样你根本不需要考虑这个限制。
只是提高group_concat_max_len并不是一个真正可行的解决方案,因为你只会在以后点击它。
真正的解决方案是摆脱逗号分隔的列表并引入另一个表,其中每个项目将是单独的行。这样,大多数计数和类似操作都更简单。