使用SUM时,我将MySQL查询的结果转换为Java类时遇到了一些问题.
在MySQL中执行简单的SUM时
SELECT SUM(price) FROM cakes WHERE ingredient = 'chocolate';
与price
为整数,它看来,SUM
有时返回字符串和有时的整数,取决于JDBC驱动程序的版本.
显然,服务器确实告诉JDBC驱动程序结果SUM
是字符串,JDBC驱动程序有时"方便地"将其转换为整数.(见Marc Matthews的解释).
Java代码使用一些BeanInfo和Introspection来自动填充查询结果的bean(列表).但是,如果部署应用程序的服务器之间的数据类型不同,这显然不起作用.
我不在乎我得到一个字符串或整数,但我想总是拥有相同的数据类型,或者至少事先知道我将获得哪种数据类型.
有没有办法知道MySQL SUM
将从Java代码中返回哪种数据类型?或者有没有人知道一些更好的方法来处理这个?
这只是一个猜测,但也许转换为整数将迫使MySQL总是告诉它是一个整数.
SELECT CAST(SUM(price) AS SIGNED) FROM cakes WHERE ingredient = 'marshmallows';