我正试图使用一个实用程序,我可以在表的每列中获得最大数据长度。在Select子句中动态列上具有聚合函数的JDBC PreparedStatement
- 我有列表列中的列表。
- 我检查每个列表。
执行以下准备好的语句。
String sql = "select max(datalength(?)) from Positions"; for(Iterate over list of column names) { preparedStatement.setString(1, StringUtils.trim(columnName)); ResultSet rs = preparedStatement.executeQuery(); if (rs.next()) { int length1 = rs.getInt(1); //print column name and max data length } }
似乎准备语句max函数取动态列不工作。它给出了不正确的值。
可以在select子句中使用动态列准备语句工作。
否,占位符不能用于动态替换列名(或表名)。 – Berger