不使用CAST的VARCHAR字段的mysql SUM

时间:2014-07-17 19:50:51

标签: mysql

当在MySql数据库中对VARCHAR类型的字段进行查询时使用SUM时,SUM会自动将其转换为数字吗? 我尝试使用

  SELECT SUM(parametervalue) FROM table

并且它显示MySql返回总和,虽然我希望将其抛出为" parametervalue" field是VARCHAR类型

1 个答案:

答案 0 :(得分:9)

MySQL对数字上下文中的字符串进行静默转换。因为它需要sum()的数字,所以MySQL只使用前导"数字"进行转换。从一个字符串。请注意,这包括小数点,减号,甚至代表科学记数法的e。因此,'1e6'被解释为数字。

在代码中,我个人会通过添加0

来明确转换
SELECT SUM(parametervalue + 0) FROM table

具有讽刺意味的是,如果字符串不是数字格式,cast()可能会返回错误,但在这种情况下,这不会返回错误。