SUM的数据类型导致MySQL

Pie*_*ter 3 java mysql sum return-type

使用SUM时,我将MySQL查询的结果转换为Java类时遇到了一些问题.

在MySQL中执行简单的SUM时

SELECT SUM(price) FROM cakes WHERE ingredient = 'chocolate';
Run Code Online (Sandbox Code Playgroud)

price为整数,它看来,SUM有时返回字符串和有时的整数,取决于JDBC驱动程序的版本.

显然,服务器确实告诉JDBC驱动程序结果SUM是字符串,JDBC驱动程序有时"方便地"将其转换为整数.(见Marc Matthews的解释).

Java代码使用一些BeanInfoIntrospection来自动填充查询结果的bean(列表).但是,如果部署应用程序的服务器之间的数据类型不同,这显然不起作用.

我不在乎我得到一个字符串或整数,但我想总是拥有相同的数据类型,或者至少事先知道我将获得哪种数据类型.

有没有办法知道MySQL SUM将从Java代码中返回哪种数据类型?或者有没有人知道一些更好的方法来处理这个?

Vin*_*vic 10

这只是一个猜测,但也许转换为整数将迫使MySQL总是告诉它是一个整数.

SELECT CAST(SUM(price) AS SIGNED) FROM cakes WHERE ingredient = 'marshmallows';
Run Code Online (Sandbox Code Playgroud)

  • 棉花糖怎么了? (2认同)
  • 我喜欢用棉花糖做的蛋糕 (2认同)