MySQL中的SUM()函數(shù)簡介
MySQL中的SUM()函數(shù)是用來對指定列進(jìn)行求和計(jì)算的函數(shù),其語法為:SUM(column_name)。參數(shù)column_name是要進(jìn)行求和計(jì)算的列名。
當(dāng)SUM()函數(shù)返回字符串類型
在MySQL中,如果指定的列中含有非數(shù)值類型的數(shù)據(jù),如字符串類型的數(shù)據(jù),那么SUM()函數(shù)將返回字符串類型的結(jié)果。這是因?yàn)镸ySQL在計(jì)算無法轉(zhuǎn)換為數(shù)值的數(shù)據(jù)時(shí),會將其轉(zhuǎn)換為0,然后執(zhí)行SUM()函數(shù)的計(jì)算。
例如,如果我們有一個(gè)包含數(shù)字和字符串類型數(shù)據(jù)的projects表,并對其中的budget列進(jìn)行求和計(jì)算,那么結(jié)果將是一個(gè)字符串類型的字符串:
SELECT SUM(budget) FROM projects;
結(jié)果:'1065000abc'
可以看出,原始數(shù)據(jù)中既有數(shù)值類型的數(shù)據(jù),也有字符串類型的數(shù)據(jù),并且這些字符串類型的數(shù)據(jù)中包含了除數(shù)字之外的字符,導(dǎo)致進(jìn)行求和計(jì)算時(shí)結(jié)果變成了字符串類型的字符串。
如何避免SUM()函數(shù)返回字符串類型的結(jié)果
如果我們不希望SUM()函數(shù)返回字符串類型的結(jié)果,那么可以使用MySQL的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)CAST()或CONVERT()來將非數(shù)值類型的數(shù)據(jù)轉(zhuǎn)換為數(shù)值類型的數(shù)據(jù),從而避免SUM()函數(shù)返回字符串類型的結(jié)果。
例如,我們可以將上方查詢語句修改為以下形式:
SELECT SUM(CAST(budget AS UNSIGNED)) FROM projects;
結(jié)果:1065000
這樣,在對budget列進(jìn)行求和計(jì)算時(shí),字符串類型的數(shù)據(jù)將被轉(zhuǎn)換為數(shù)值類型的數(shù)據(jù),從而避免了SUM()函數(shù)返回字符串類型的結(jié)果。