您好,感谢您阅读我的帖子。
我有一个PostgreSQL表" t"用一列" c"哪种类型是"字符变化(32)"。
此列中的值如下所示:" 2014100605"。
我正在使用" MAX()"用于检索此列中最大值的聚合函数。
SELECT MAX(c) AS max FROM t;
在Java中,如果我准备上面的查询,请获取" resultSet"对象并发送getString(" max")消息,我得到max = null。
如果我发送getInt(" max")方法,我会得到我期待的结果,例如" 2014100605"。
这是正常行为吗?
我真的被允许这样做,还是偶然得到了预期的结果?
是" MAX()"实际上使用字典顺序?
最好的问候。
一些Java代码:
s_preparedSqlQuery =
"SELECT MAX(quotinv_nro) AS quotinv_nro_max "
+ "FROM imw_quotation_invoice "
+ "WHERE quotinv_type = ? "
+ "AND quotinv_nro LIKE '" + s_quotinvDate + "%'";
preparedStatement = m_connection.prepareStatement(s_preparedSqlQuery);
preparedStatement.setString(1, s_quotinvType);
resultSet = preparedStatement.executeQuery();
if(resultSet != null)
{
if(resultSet.next())
{
// s_quotinvNroMax = resultSet.getString("quotinv_nro_max");
n_quotinvNroMax = resultSet.getInt("quotinv_nro_max");
// if(s_quotinvNroMax == null)
if(n_quotinvNroMax == 0)
{
n_nbQuotinvsThisSameDate = 0;
return n_nbQuotinvsThisSameDate;
}
else
{
s_quotinvNroMax = Integer.toString(n_quotinvNroMax);
n_length = s_quotinvDate.length();
s_currentMaxNro = s_quotinvNroMax.substring(n_length - 1);
n_nbQuotinvsThisSameDate = Integer.valueOf(s_currentMaxNro);
}
}
}
答案 0 :(得分:0)
如果您正在使用唯一的Id列....
int maxID = 0;
Statement s2 = con.createStatement();
s2.execute("SELECT MAX(UniqueId) FROM MyTable");
ResultSet rs2 = s2.getResultSet();
if (rs2.next())
{
maxID = rs2.getInt(1);
}
如果您正在使用任何其他非键列......
int maxID = 0;
Statement s2 = con.createStatement();
s2.execute("SELECT MAX(ColumnValue) FROM MyTable");
ResultSet rs2 = s2.getResultSet();
while (rs2.next())
{
maxID = rs2.getInt(1);
}