如何修改SQL-Statement?

时间:2014-03-05 09:50:48

标签: java sql string db2 max

我有一个我无法解决的问题:(

我执行此sql语句以获取CCID-String的最大值:

                "select MAX(CCID) as test123 from "
                        + tabelleName+ " where CCID like 'W%'");

之后我想增加字符串。我将W子串并将字符串转换为int:

                String ccid = rs.getString("test123");
                String test = ccid.substring(1,6);
                int id = Integer.parseInt(test);
                int newid = id+1;

目前max(ccid)看起来像W01352。 newid的结果是“1353”没有“W0”。

我想得到一个类似于W01353的字符串,我可以将其添加到db2数据库以获取下一个W-Number。

有人有任何想法吗?

抱歉我的英语不太完美;)

谢谢你。

2 个答案:

答案 0 :(得分:1)

也许您可以查看db2 substring函数:http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2z9.doc.sqlref%2Fsrc%2Ftpc%2Fdb2z_bif_substring.htm

您可以尝试select substring(MAX(CCID), 2, x) as test123 from ..

其中x是您想要的类型:CODEUNITS16CODEUNITS32,..

这应该返回没有W0

的值

修改

要将前导零添加到新整数,请执行以下操作:

String old = "W01234";
String sub = old.substring(1); // "01234"
Integer id = Integer.parse(sub); //1234
Integer newI = id + 1; // 1235
String newS = "W" + ("00000" + newI).substring(newI.toString().length()); // "W01235"

答案 1 :(得分:0)

使用PreparedStatement而不是Statement,eaiser和有效的方式来处理SQL查询。

String sql = "select MAX(CCID) as test123 from <tabelleName> where CCID like '?%'");
PreparedStatement preparedStatement = dbConnection.prepareStatement(sql);
preparedStatement.setString(1, "...");
ResultSet rs = preparedStatement.executeQuery(sql);