如何拆分与字符串数组中的字符组合的数字? (eg.c1)

时间:2011-04-19 08:27:06

标签: java sql arrays string auto-increment

我有一个表:'Categories'有两个字段:Category_ID和Category。 Category_ID字段中的数据类似于'c1','c2'。如果有10行,那么从c1到c10。当我在此表中插入新记录时,如何设置类似c11或c12的Category_ID?如果没有删除任何记录,则可以根据行数轻松设置。但是用户可以删除记录。我试图从表中检索Category_ID,将其存储在vector中,然后设置一个字符串变量,该变量存储由';'分隔的所有category_ids我想从Category_ID中分离c和相关数字,以便可以使用插入查询中的下一个数字。

   Statement st;
   ResultSet rsCatID;

   String query="";
   String querySelect="";//used to get last category_id number,so that next value will be applied in insert query.
   Vector vCatID=new Vector();
   String strCatID="";
   String[] arrCatID;    

然后在连接后尝试catch块行

       querySelect="select Category_ID from Categories";
       rsCatID=st.executeQuery(querySelect);
       while(rsCatID.next()){
            vCatID.add(rsCatID.getString("Category_ID").toString());
       }
       for(int i=0;i<vCatID.size();i++){
           strCatID+=vCatID.get(i).toString()+";";
       }

       System.out.println("strcatidcount=="+strCatID);

       arrCatID=strCatID.split(";");
       for(int i=0;i<arrCatID.length;i++){
            System.out.println("arrCatID=="+arrCatID[i]);
       }  

现在想要从数组中拆分数字并希望插入下一个值并将其附加到字符“c”并插入整个新记录。我该怎么分裂呢?例如。如果category_id是c3,那么3必须存储在另一个数组中,对于新记录4,将插入(c4)。

2 个答案:

答案 0 :(得分:3)

SELECT MAX((CAST(REPLACE(Category_ID,'C','') AS INT))) from Categories

可替换地:

SELECT MAX(cint(MID(Category_ID,2))) FROM Categories;

这将带来最高的回归

答案 1 :(得分:1)

这太复杂了!只需使用自动增量字段。为什么类别字段必须以字母c开头呢?为什么它不能只是一个整数?如果需要在应用程序中以“c”开头显示,只要从数据库中读取值,就可以修改它们,但是将它们作为整数保存在数据库中。这将更有效率,让您避免重新发明轮子。