比较'第1号'和'第2号'的中1和2大小,用oracle sql怎么实现,想过用截取出1和2在用max的方法,但是这是已知字符长度如果是‘第11号’呢?在 '第'与'号'中间的数值不是已知的,该怎么做?

解决方案 »

  1.   

    --使用正则表达式取出数字就行了
    select to_number(regexp_substr('第12号','[[:digit:]]+')) from dual;
    select to_number(regexp_substr('第12号','[0-9]+')) from dual;
      

  2.   

    order by substr(2,length(col)-2)
      

  3.   

    SQL> SELECT substr('第11号', 2, length('第11号') - 2) num FROM dual;
     
    NUM
    ---
    11
     
    SQL> 
      

  4.   

    上面得加上to_number,不然跟直接用字段排序是一样的。
      

  5.   

    SELECT to_number(trim(translate(col,translate(col,'1234567890',' '),' '))) FROM dual 
      

  6.   

    我想比较一个表里dash这个字段的最大值
    但是它存的是第x号这种字符如果只存一个数的话我用max就可以知道这个字段的最大值所以我想截掉头和尾
      

  7.   

    select to_number(substr('第123号',2,length('第123号')-2)) from dual 
    select to_number(RTRIM(LTRIM('第123号','第'),'号')) from dual
    第一种方法是去掉前边两个字符,去掉后边两个字符
    第二种方法是去掉前边的‘第’和后边的‘号’
    效果都是一样的