数据库需要按照标题的时间,或者期数来排序比如:“读者文摘第1期”、“读者文摘第2期”、“读者文摘第3期”,可以不可以直接根据标题来排序,让她做到按期数的倒序排序?
注:标题格式是定死的。aa第x期。ps:直接按照标题升序或者倒序会出现第1期和第10期在一起,排在第二期的后面。

解决方案 »

  1.   

    直接按照标题的排序是这样的:
    xxxx周报(第9期)  
    xxxx周报(第7期)  
    xxxx周报(第5期)  
    xxxx周报(第3期)  
    xxxx周报(第2期)  
    xxxx周报(第20期)  
    xxxx周报(第1期)  
      

  2.   

    select * from tb order by to_number(replace(substr(标题 , instr(标题,'第') + 1 , len(标题)) , '期','')) desc
      

  3.   

    老大。提示“len”附近有错误。  “"len" invalid statement”
      

  4.   

    函数应该是length,改成length后不报这个错了,但是报:“invalid number”
      

  5.   


    --表名:tb1   字段:col1
    select col1, regexp_substr(col1,'[[:digit:]]+')
    from tb1   
    order by regexp_substr(col1,'[[:digit:]]+')
      

  6.   


    create table test1(col1  nvarchar2(50));
    insert into test1 values('读者文摘第05期');
    insert into test1 values('读者文摘第03期'); 
    insert into test1 values('读者文摘第06期');
    insert into test1 values('读者文摘第10期');
    insert into test1 values('读者文摘第11期');
    insert into test1 values('读者文摘第02期');select col1, regexp_substr(col1,'[[:digit:]]+') c_no
    from test1
    order by regexp_substr(col1,'[[:digit:]]+')          col1         c_no
    ---------------------------
    1 读者文摘第02期 02
    2 读者文摘第03期 03
    3 读者文摘第05期 05
    4 读者文摘第06期 06
    5 读者文摘第10期 10
    6 读者文摘第11期 11
      

  7.   


    create table test1(col1  nvarchar2(50));
    insert into test1 values('读者文摘第5期');
    insert into test1 values('读者文摘第3期'); 
    insert into test1 values('读者文摘第6期');
    insert into test1 values('读者文摘第10期');
    insert into test1 values('读者文摘第11期');
    insert into test1 values('读者文摘第2期');select col1, regexp_substr(col1,'[[:digit:]]+') c_no
    from test1
    order by to_number(regexp_substr(col1,'[[:digit:]]+'),'99999')          col1         c_no
    ---------------------------
    1    读者文摘第2期     2
    2    读者文摘第3期     3
    3    读者文摘第5期     5
    4    读者文摘第6期     6
    5    读者文摘第10期    10
    6    读者文摘第11期    11
      

  8.   

    实测数据:CREATE TABLE T159
    (
        F1 VARCHAR2(20)
    );INSERT INTO T159 VALUES('xxxx周报(第9期)');
    INSERT INTO T159 VALUES('xxxx周报(第3期)');
    INSERT INTO T159 VALUES('xxxx周报(第2期)');
    INSERT INTO T159 VALUES('xxxx周报(第10期)');
    INSERT INTO T159 VALUES('xxxx周报(第5期)');
    INSERT INTO T159 VALUES('xxxx周报(第7期)');
    INSERT INTO T159 VALUES('xxxx周报(第1期)');
    INSERT INTO T159 VALUES('xxxx周报(第20期)');
    实测结果: