当在MySql数据库中对VARCHAR类型的字段进行查询时使用SUM时,SUM会自动将其转换为数字吗? 我尝试使用
SELECT SUM(parametervalue) FROM table
并且它显示MySql返回总和,虽然我希望将其抛出为" parametervalue" field是VARCHAR类型
答案 0 :(得分:9)
MySQL对数字上下文中的字符串进行静默转换。因为它需要sum()
的数字,所以MySQL只使用前导"数字"进行转换。从一个字符串。请注意,这包括小数点,减号,甚至代表科学记数法的e
。因此,'1e6'
被解释为数字。
在代码中,我个人会通过添加0
:
SELECT SUM(parametervalue + 0) FROM table
具有讽刺意味的是,如果字符串不是数字格式,cast()
可能会返回错误,但在这种情况下,这不会返回错误。