我在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.我把它理解为“聚合操作结果以存储它的相同的数据类型返回”。iS我的假设是正确的。
如果是,我是否可以将返回值转换为长值或字符串?
发布于 2014-03-07 13:07:31
实际上,您的假设是正确的,即聚合操作结果返回与存储属性相同的数据类型。当然,这就是为什么您会看到错误消息“有效范围外”:SMALLINT在-32768到32767之间签名,或者0和65535之间没有签名。对于这种数据类型,8.0042892E7要大得多。
但是,可以将结果转换为INT:
CAST(SUM(whatever) as INT) 对于INT,有符号整数的范围为-2147483648,2147483647,无符号整数为0,4294967295。
https://stackoverflow.com/questions/22250295
复制相似问题