我需要計算一個column(col2)
的總和,但該列同時包含數字和文本。在使用sum()之前,我如何排除文本? 該表有大約100萬行,除了首先替換文本之外,還有其他方法嗎? 我的查詢將是:提前varchar列的mysql聚合函數
Select col1,sum(col2) from t1 group by col1,col2
感謝
我需要計算一個column(col2)
的總和,但該列同時包含數字和文本。在使用sum()之前,我如何排除文本? 該表有大約100萬行,除了首先替換文本之外,還有其他方法嗎? 我的查詢將是:提前varchar列的mysql聚合函數
Select col1,sum(col2) from t1 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
希望這是有益
您可以使用正則表達式過濾柱:
Select col1,sum(col2) from t1 WHERE col2 REGEXP '^[0-9]+$' group by col1,col2
假設你指的數量是在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;