0

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

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

提前致谢

4

3 回答 3

2

您可以使用正则表达式过滤列:

Select col1,sum(col2) from t1  WHERE col2 REGEXP '^[0-9]+$' group by col1,col2
于 2015-05-04T07:02:00.307 回答
0

您可以使用 MySQL 内置的REGEXP函数。

要了解更多信息,请访问:https ://dev.mysql.com/doc/refman/5.1/en/regexp.html

或者另一种方法是使用CASTCONVERT函数

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

希望这会有所帮助

于 2015-05-04T07:11:14.880 回答
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;
于 2015-05-04T07:35:43.800 回答