比如说id字段中现有
REG000000000001
REG000000000002
我想增加一个为REG000000000003,该如何办?

解决方案 »

  1.   

    select 'REG'+replace(str(max(substring(id,4,12))+1,12),' ','0') from
    yourtable
      

  2.   

    但是关键是我并不知道REG后面的确切数字,那需要从数据库中getString,但是得到的字符串数据怎样处理才能+1后再生成字符串数据呢?
      

  3.   

    如果是这样,如果你能够保证id字段一定会是15个字节的话,即为REG+12位数字,那么可以通过先选择已存在数据中12个数字最大的那条记录,sql语句为:
    select top 1 ID from TableName order by ID desc;//已经测试过
    然后取得ID对应的字符串,不妨为String str = "REG000000000011";
    进行如下例处理
    public class Test {
      public static void main(String[] args) {
        String str = "REG100000000011";
        str = str.substring(3);
        Test st = new Test();
        str = st.backString(str);
        System.out.println(str);//递增1后写入数据库的数据字段
      }
      public String backString(String str) {
        String num = str;
        long i = Long.parseLong(num);
        i = i+1;//递增
        num = "";
        num = Long.toString(i);
        num = "000000000000" + num.trim();
        num = num.substring(num.length()-12);
        num = "REG" + num;
        return num;
      }
    }
      

  4.   

    String ID=result.getString('ID');
    String TempID=
       String.valueOf(Integer.parseInt(ID.substring(4),10)+1)
    int len=TempID.length();
    String NextID="REG000000000000000".substring(0,len)+TempID;
      

  5.   

    我试用jdbc连接本地数据库名Test,用户sa,密码空,数据表名TestT,表中两个字段:ID VARCHAR(15),Memo VARCHAR(10);已存数据最大为REG000000000206
    测试成功,程序如下:import java.sql.*;
    public class DbTest {
      public static void main(String[] args) {
        try {
          String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
          String user="sa";
          String passwd="";
          String database = "TEST";
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
          Connection con = DriverManager.getConnection(address,user,passwd);
          con.setCatalog(database);
          Statement smt = con.createStatement();
          String sqlCode = "select top 1 ID from TestT order by ID desc";
          ResultSet r = smt.executeQuery(sqlCode);
          String num = "";
          while(r.next()) {
            num = r.getString("ID");
          }
          r.close();
          //递增处理
          num = num.substring(3);
          long i = Long.parseLong(num);
          i = i+1;//递增
          num = "";
          num = Long.toString(i);
          num = "000000000000" + num.trim();
          num = num.substring(num.length()-12);
          num = "REG" + num;
          sqlCode = "insert into TestT values ('"+num+"','test');";
          smt.executeUpdate(sqlCode);
          smt.close();
          con.close();
          System.out.println("success insert id is " + num);
        }
        catch(Exception e) {
          System.out.println(e);
        }
      }
    } //
      

  6.   

    insert into tablename(id)
    select 'REG'+replace(str(max(substring(id,4,12))+1,12),' ','0') 
    from tablename这种方法很好!
      

  7.   

    我试用jdbc连接本地数据库名Test,用户sa,密码空,数据表名TestT,表中两个字段:ID VARCHAR(15),Memo VARCHAR(10);已存数据最大为REG000000000206
    测试成功,程序如下:import java.sql.*;
    public class DbTest {
      public static void main(String[] args) {
        try {
          String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
          String user="sa";
          String passwd="";
          String database = "TEST";
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
          Connection con = DriverManager.getConnection(address,user,passwd);
          con.setCatalog(database);
          Statement smt = con.createStatement();
          String sqlCode = "select top 1 ID from TestT order by ID desc";
          ResultSet r = smt.executeQuery(sqlCode);
          String num = "";
          while(r.next()) {
            num = r.getString("ID");
          }
          r.close();
          //递增处理
          num = num.substring(3);
          long i = Long.parseLong(num);
          i = i+1;//递增
          num = "";
          num = Long.toString(i);
          num = "000000000000" + num.trim();
          num = num.substring(num.length()-12);
          num = "REG" + num;
          sqlCode = "insert into TestT values ('"+num+"','test');";
          smt.executeUpdate(sqlCode);
          smt.close();
          con.close();
          System.out.println("success insert id is " + num);
        }
        catch(Exception e) {
          System.out.println(e);
        }
      }
    } //