我在mysql数据库的表中有一个类型为SMALLINT(5)的字段。
当我尝试使用投影对字段进行聚合操作(sum())时, 我得到以下异常
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLDataException:
'8.0042892E7' in column '1' is outside valid range for the datatype SMALLINT.
我将其理解为“聚合操作结果以与其存储的数据类型相同的方式返回”。我的假设是正确的。
如果是这样,我是否可以将返回值强制转换为long值或String
答案 0 :(得分:2)
实际上,您的假设是正确的,即聚合操作结果返回存储该属性的相同数据类型。当然,这就是您看到错误消息“在有效范围之外”的原因:SMALLINT在-32768和32767签名之间,或0和65535无符号。对于此数据类型,8.0042892E7
远远不够。
但是可以将结果转换为INT:
CAST(SUM(whatever) as INT)
对于INT,有符号整数的范围是[-2147483648,2147483647],无符号的范围是[0,42949672]。