2015-05-04 175 views
0

我需要計算一個column(col2)的總和,但該列同時包含數字和文本。在使用sum()之前,我如何排除文本? 該表有大約100萬行,除了首先替換文本之外,還有其他方法嗎? 我的查詢將是:提前varchar列的mysql聚合函數

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

感謝

回答

2

您可以使用正則表達式過濾柱:

Select col1,sum(col2) from t1 WHERE col2 REGEXP '^[0-9]+$' group by col1,col2 
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;