varchar列的mysql聚合函数

时间:2015-05-04 06:59:07

标签: mysql sum aggregate varchar2

我需要计算一个column(col2)的总和,但该列同时包含数字和文本。在使用sum()之前如何单独排除文本? 该表有大约100万行,除了首先替换文本之外还有什么方法吗? 我的查询将是:

Select col1,sum(col2) from t1 group by col1,col2

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以使用regexp过滤列:

Select col1,sum(col2) from t1  WHERE col2 REGEXP '^[0-9]+$' group by col1,col2

答案 1 :(得分:0)

您可以使用内置 REGEXP 功能的MySQL。

要了解详情,请访问: https://dev.mysql.com/doc/refman/5.1/en/regexp.html

或者另一种方法是使用 CAST CONVERT 功能

详细了解: https://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

希望这是有帮助的

答案 2 :(得分:0)

假设你的意思是数字在tex的开头,最简单的方法就是使用隐式转换:

Select col1, sum(col2 + 0)
from t1
group by col1, col2;

如果col2以非数字字符开头,则MySQL将返回0。否则,它会将前导数字字符转换为数字。

请注意,您的查询确实没有意义,因为您按col2进行汇总,并将其包含在group by中。我怀疑你真的想要:

Select col1, sum(col2 + 0)
from t1
group by col1;