如何从结果集中查找每列中最长字段的长度

时间:2016-02-21 16:58:24

标签: java mysql

我知道我可以通过执行以下命令从特定表中找到列中最长的字段:

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。

中每列中最长字段的长度

谢谢

3 个答案:

答案 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;