ORACLE:对包含数字的String字段进行排序

时间:2017-03-23 11:57:09

标签: sql oracle

我想按升序显示页码。但是,由于字段PAGE是String数据类型,所以正常' ORDER BY'考虑10< 2.我必须将字段PAGE设为字符串,因为可以输入像' 3-4'。任何人都可以建议一个出路。我已附上截图供参考。

请帮助。Screenshot

select id
    ,F_NL
    ,page
    ,title
from newsletter_content
where F_NL = '29'
order by page asc;

2 个答案:

答案 0 :(得分:1)

{{1}}

<强> rextester demo

答案 1 :(得分:0)

您可以检查是否存在-字符并提取前面的数字:

ORDER BY CASE
           WHEN INSTR( page, '-' ) > 0
           THEN TO_NUMBER( SUBSTR( page, 1, INSTR( page, '-' ) - 1 ) )
           ELSE TO_NUMBER( page )
         END;