Как разделить цифру в сочетании с символом из массива строк? (Eg.c1) - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть таблица: «Категории», которая имеет два поля: Category_ID и Category. Данные в поле Category_ID похожи на 'c1', 'c2'. Если есть 10 строк, то от c1 до c10. Когда я вставляю новую запись в эту таблицу, как я могу установить Category_ID как c11 или c12? Если ни одна из записей не удалена, ее легко установить в соответствии с количеством строк. Но пользователь может удалить записи. Я попытался извлечь Category_ID из таблицы, сохранить его в векторе, а затем установить одну строковую переменную, в которой хранятся все category_ids, разделенные ';' Я подумал отделить c и связанную цифру от Category_ID, чтобы можно было использовать следующую цифру в запросе вставки.

   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;    

Тогда в try лови блок-строки после подключения,

       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 ]

3 голосов
/ 19 апреля 2011
SELECT MAX((CAST(REPLACE(Category_ID,'C','') AS INT))) from Categories

АЛЬТЕРНАТИВА:

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

Это вернет самый высокий интумум

1 голос
/ 19 апреля 2011

Это слишком сложно!Просто используйте поле автоинкремента.Почему поле категории должно начинаться с буквы c?Почему это не может быть просто целое число?Если вам нужно, чтобы оно отображалось в вашем приложении, начиная с буквы «c», вы можете просто изменять значения всякий раз, когда вы читаете их из базы данных, но сохранять их как целые числа в базе данных.Это будет более эффективным и позволит вам не изобретать велосипед заново.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...