我想得到一个表中可以利用的最小的学号列的值。
表A中学号列是PK,varchar2(4),现在表中存在学号为0001,0002,0003,0005,0006,0008,。的记录。
就是说0004号和0007号都是可以利用的学号,我现在想select出0004这个号,应该怎么做呢,谢谢。

解决方案 »

  1.   

    试试这个:
    SELECT B.ID
    FROM (
    SELECT LTRIM(TO_CHAR(ROWNUM,'0000')) AS ID,A.PK
    FROM(
    SELECT PK FROM TABLE ORDER BY PK) A
    ) B 
    WHERE B.ID <> B.PK AND ROWNUM = 1
      

  2.   

    select to_char(max(to_number(学号))+1,'0000') from (select 学号,to_number(学号)-rownum t from a order by 学号) where t=0
      

  3.   

    select to_char(a.学号+1,'0000')
    from
    (
    select to_number(t.学号) 学号, to_number(lead(学号, 1, 0) OVER(ORDER BY 学号)) as ff from aaa t
    ) a
    where
    a.学号 != a.ff-1
    and rownum=1
      

  4.   

    select b.rn from (SELECT LTRIM(TO_CHAR(ROWNUM,'0000') rn) from a) b,a where b.rn<>a.pk
      

  5.   

    select * from (
     select to_number(pk)   from table  where 条件  order by to_number(pk))
     where rownum=1;