当在MySql数据库中查询类型为VARCHAR的字段使用SUM时,SUM会自动将其转换为数字吗?我通过使用尝试了这个
SELECT SUM(parametervalue) FROM table
Run Code Online (Sandbox Code Playgroud)
并且它揭示了MySql返回总和,虽然我预计会抛出一个错误,因为"parametervalue"字段是VARCHAR类型
MySQL对数字上下文中的字符串进行静默转换.因为它需要一个数字sum(),MySQL只使用字符串中的前导"数字"进行转换.请注意,这包括小数点,减号,甚至e代表科学记数法.所以,'1e6'被解释为一个数字.
在代码中,我个人会通过添加0以下内容来明确转换:
SELECT SUM(parametervalue + 0) FROM table
Run Code Online (Sandbox Code Playgroud)
具有讽刺意味的是,cast()如果字符串不是数字格式,则可能会返回错误,但在这种情况下,这不会返回错误.
| 归档时间: |
|
| 查看次数: |
9483 次 |
| 最近记录: |