当写接口写sql语句时,才创造须要用sum()函数统计的那个字段在表中设计好的数据类型是varchar类型,由于对聚合函数sum()认识不深,本以为直接统计会报错,语句如下:
SELECT SUM(file_size) FROM res_material
但运行正常,上网搜索时看到了这么一句话“如果varchar类型中存放的都是数字,须要看是什么数据库,如果是sqlserver那么可将字符转成数字再进行sum,如果是oracle,则可隐形转换成数字,无需修正语句”。虽然没有搜索到关于mysql中sum()函数也有隐形转化的特点,但我利用的是Mysql,如上文所示我没有在语句中加上cast()转换类型的函数,运行结果依然精确,这该当能够解释在mysql中的sum()函数与oracle一样也有隐形转化的特点(还须要学习)。

其余,经由测试,如果统计字段中有的值不是数字,那么也不会报错,sum()函数只统计数字行。
且当语句加上cast()函数时,统计结果依然精确:
SELECT SUM(CAST(file_size AS DECIMAL(10,2))) AS file_size FROM res_material
补充一点:MySql sum(A+B)和sum(A)+sum(B)的差异 :
1.如果字段A和字段B的值都不为NULL,则以上两种情形一样
2.如果个中有一个字段的值为NULL则sum(A+B)的值为NULL
学习中,如有禁绝确或不准确的地方,请多示正,感激