使用Spring JdbcTemplate编写的语句的结果集中的count(*)返回值类型是什么?
String query = "select count(*) as ROW_COUNT from table1";
List<Map<String, Object>> list = executePreparedStatement(query);
Iterator<Map<String, Object>> iter = list.iterator();
if (iter.hasNext()) {
Map<String, Object> lom = iter.next();
return (((Long) lom.get("ROW_COUNT"))).intValue();
}
这取决于JDBC驱动程序/和/或数据库吗?
例如,在DB2中,返回值类型为Integer,而在PostgreSQL中则为Long。
这为什么不同?
答案 0 :(得分:1)
不同的供应商有不同的实现方式。
有时甚至一个供应商也可以有不同的实现方式。
您需要相应地编码。
用于Linux / Unix / Windows的Db2,用于i系列的Db2,用于Z / OS的Db2,都从COUNT函数返回一个大整数。
另外,如果表是分布式的,我的Db2可以从count函数返回DECIMAL(15,0)。
Db2中还有一个COUNT_BIG函数,该函数返回DECIMAL(31,0)。