如何分割与字符串数组中的字符组合的数字? (eg.c1)
我有一个表格:'Categories',它有两个字段:Category_ID和Category。 Category_ID字段中的数据类似于'c1','c2'。如果有10行,则从c1到c10。当我在此表中插入新记录时,如何设置类似于c11或c12的Category_ID?如果没有记录被删除,那么它很容易根据行数进行设置。但用户可以删除记录。我尝试从表中检索Category_ID,将其存储在向量中,然后设置一个字符串变量,其中存储所有用';'分隔的category_id。我想将c和相关的数字从Category_ID中分离出来,这样可以在插入查询中使用下一个数字。如何分割与字符串数组中的字符组合的数字? (eg.c1)
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;
然后,在连接之后,尝试捕捉块线,
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)。
SELECT MAX((CAST(REPLACE(Category_ID,'C','') AS INT))) from Categories
或者:
SELECT MAX(cint(MID(Category_ID,2))) FROM Categories;
这将带来最高intnum回
这是太复杂了!只需使用自动增量字段。为什么类别字段必须以字母c开头?为什么它不能只是一个整数?如果您需要在应用程序中以'c'开始显示,则只要从数据库中读取值就可以修改这些值,但将它们保存为数据库中的整数。这将会更有效率,并且可以避免重新发明轮子。
谢谢。是第一选择总是使用自动增量field.But由于有一定的要求,我不能使用它。 – bsm 2011-04-19 10:41:52
非常感谢。但我使用Microsfot Access,所以Cast功能不起作用。我已经使用CINT函数,现在它的工作。 – bsm 2011-04-19 10:41:04
它在MS Access的sql视图中工作。但是在编译我的java文件时给我一个错误。 [Microsoft] [ODBC Microsoft Access驱动程序]表达式中的未定义函数'REPLACE' – bsm 2011-04-19 11:03:46
这非常奇怪,但是如果您知道第一个字符总是您将移除的字符,则可以使用以下函数:SELECT MAX(cint(MID (Category_ID,2))) FROM Categories; – 2011-04-19 12:07:55