我创建了一个USERID,必须是char型的。只输入数字,比如1,2,3,442,3467等
但是我需要把这列的最大的数字取出来+1,请问应该如何操作?

解决方案 »

  1.   

    SELECT TO_NUMBER(MAX(USERID))+1 FROM TABLE_NAME;
      

  2.   

    select max(to_number(userid))+1 from table_name;
    不知道行不行,试一下。
      

  3.   

    CREATE TABLE TEST(USREID CHAR(10));
    INSERT INTO TEST VALUES('1');
    INSERT INTO TEST VALUES('2');
    INSERT INTO TEST VALUES('3');
    INSERT INTO TEST VALUES('442');
    INSERT INTO TEST VALUES('3467');
    SELECT TO_NUMBER(MAX(USREID)) FROM TEST;
    ------------------------------------------------------------
    TO_NUMBER(MAX(USREID)) 
    443SELECT MAX(TO_NUMBER(USREID)) FROM TEST;
    -------------------------------------------------------------
    TO_NUMBER(MAX(USREID)) 
    3468
      

  4.   

    现转化为数值再去最大的
    SELECT MAX(TO_NUMBER(USREID)) FROM TEST;
      

  5.   

    上面SELECT 语句少加了1,与结果不符合,修改下
    ----
    CREATE TABLE TEST(USREID CHAR(10));
    INSERT INTO TEST VALUES('1');
    INSERT INTO TEST VALUES('2');
    INSERT INTO TEST VALUES('3');
    INSERT INTO TEST VALUES('442');
    INSERT INTO TEST VALUES('3467');
    SELECT TO_NUMBER(MAX(USREID))+1 FROM TEST;
    ------------------------------------------------------------
    TO_NUMBER(MAX(USREID))
    443SELECT MAX(TO_NUMBER(USREID))+1 FROM TEST;
    -------------------------------------------------------------
    TO_NUMBER(MAX(USREID))
    3468
      

  6.   

    解决并发流水号问题:
    1、设定单独表,在一个事务中先update字段自加1,然后再select
    2、使用Oracle中的Sequence
    3、Java中可以使用同步方式对数据表进行select 最大值+1方式