xor规则Mysql中关于聚合函数sum()最新的认识
开源素材网站最近开发后台接⼝的时候,需要做⼀个统计查询,使⽤到sum()函数,数据库中的表是以前已经设计好的,并且要进⾏统计查询的那张表在其他⼀些接⼝中已经使⽤,mysql的版本是5.5.28,这是背景。
当写接⼝写sql语句时,才发现需要⽤sum()函数统计的那个字段在表中设计好的数据类型是varchar类型,由于对聚合函数sum()认识不深,本以为直接统计会报错,语句如下:
SELECT SUM(file_size) FROM res_material
但运⾏正常,上⽹搜索时看到了这么⼀句话“如果varchar类型中存放的都是数字,需要看是什么数据库,如果是sqlserver那么可将字符转成数字再进⾏sum,如果是oracle,则可隐形转换成数字,⽆需修改语句”。虽然没有搜索到关于mysql中sum()函数也有隐形转化的特点,但我使⽤的是Mysql,如上⽂所⽰我没有在语句中加上cast()转换类型的函数,运⾏结果依然正确,这应该能够说明在mysql中的sum()函数与oracle⼀样也有隐形转化的特点(还需要学习)。js switch语句判断成绩
另外,经过测试,如果统计字段中有的值不是数字,那么也不会报错,sum()函数只统计数字⾏。
且当语句加上cast()函数时,统计结果依然正确:php文件在线解析
SELECT SUM(CAST(file_size AS DECIMAL(10,2))) AS file_size FROM res_materialmysql语句转oracle
补充⼀点:MySql sum(A+B)和sum(A)+sum(B)的区别 :
1.如果字段A和字段B的值都不为NULL,则以上两种情况⼀样
cdn龙头上市公司
2.如果其中有⼀个字段的值为NULL则sum(A+B)的值为NULL
学习中,如有不正确或不准确的地⽅,请多指正,谢谢

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。