mysql varchar 列的聚合函数
mysql aggregate function for varchar column
我需要计算一个 column(col2)
的总和,但该列既有数字又有文本。在使用 sum() 之前如何单独排除文本?
table 有大约 100 万行,那么除了先替换文本之外还有什么办法吗?
我的查询将是:
Select col1,sum(col2) from t1 group by col1,col2
提前致谢
您可以使用正则表达式过滤列:
Select col1,sum(col2) from t1 WHERE col2 REGEXP '^[0-9]+$' group by col1,col2
您可以使用 MySQL 内置 REGEXP 函数。
要了解更多信息,请访问: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
希望对您有所帮助
假设你的意思是数字在tex的开头,最简单的方法就是使用隐式转换:
Select col1, sum(col2 + 0)
from t1
group by col1, col2;
如果 col2
以非数字字符开头,则 MySQL 将 return 0
。否则,它会将前导数字字符转换为数字。
请注意,您的查询实际上没有意义,因为您是按 col2
聚合并将其包含在 group by
中。我怀疑你真的想要:
Select col1, sum(col2 + 0)
from t1
group by col1;
我需要计算一个 column(col2)
的总和,但该列既有数字又有文本。在使用 sum() 之前如何单独排除文本?
table 有大约 100 万行,那么除了先替换文本之外还有什么办法吗?
我的查询将是:
Select col1,sum(col2) from t1 group by col1,col2
提前致谢
您可以使用正则表达式过滤列:
Select col1,sum(col2) from t1 WHERE col2 REGEXP '^[0-9]+$' group by col1,col2
您可以使用 MySQL 内置 REGEXP 函数。
要了解更多信息,请访问: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
希望对您有所帮助
假设你的意思是数字在tex的开头,最简单的方法就是使用隐式转换:
Select col1, sum(col2 + 0)
from t1
group by col1, col2;
如果 col2
以非数字字符开头,则 MySQL 将 return 0
。否则,它会将前导数字字符转换为数字。
请注意,您的查询实际上没有意义,因为您是按 col2
聚合并将其包含在 group by
中。我怀疑你真的想要:
Select col1, sum(col2 + 0)
from t1
group by col1;