我知道我可以通过执行以下命令从特定表中找到列中最长的字段:
Statement s;
ResultSet r;
r=s.executeQuery("SELECT MAX(LENGTH(field_to_query)) FROM table_to_query;");
但是在Java中执行查询后,有没有办法在获取的ResultSet的每一列中获取最长的字段:
示例: 我执行了:
r=s.executeQuery("select * from emlployee,department where d_id=dept_id and dept_name="Research");
现在我希望获得r。
中每列中最长字段的长度谢谢
答案 0 :(得分:2)
使用相同的查询并找到每列的最大值,你是如此接近
SELECT MAX(LENGTH(field_to_query1))as f1 , MAX(LENGTH(field_to_query2))as f2 FROM table_to_query;
答案 1 :(得分:1)
这里你去了我创建的i实用程序类,它将为你提供一个int数组,表示每列的最大大小
import java.sql.ResultSet;
import java.sql.SQLException;
public class MyDbUtility {
private MyDbUtility(){}
public static int[] maxColumns(final ResultSet resultSet) throws SQLException {
int columnNumber = resultSet.getMetaData().getColumnCount();
int[] max = new int[columnNumber];
int currentRow = resultSet.getRow();
int fetchDirection = resultSet.getFetchDirection();
if (fetchDirection == ResultSet.FETCH_FORWARD) {
resultSet.beforeFirst();
}else {
resultSet.afterLast();
}
while (resultSet.next()) {
for (int i = 1; i <= columnNumber; i++) {
if (resultSet.getString(i).length() > max[i-1]) {
max[i-1] = resultSet.getString(i).length();
}
}
}
resultSet.absolute(currentRow);
return max;
}
}
<强>使用强>
int[] max=MyDbUtility.maxColumns(reslut);
答案 2 :(得分:0)
你可以像GREATEST那样级联它:
SELECT
GREATEST(
MAX(LENGTH(field_to_query1)), GREATEST( MAX(LENGTH(field_to_query2)), MAX(LENGTH(field_to_query3)) ))
FROM table_to_query;