由於需要維護表裏面的值,id主鍵是字符串型,保存的都是數字,每次都要看好久,才知道新增id,用哪個數字;
遇到了一個主鍵排序的問題。字符型的主鍵,保存的都是數字,數據導過來以後發現數據排序都是亂的,就想着按數字規則排序。
但發現to_number總是報錯,就想着裏面應該是有字符存在。後來使用了正則關係式,問題解決。
以下是正則關係式的兩種用法,記錄下來:
方法一:
select * from nc_dept order by to_number(regexp_substr(id,'[0-9]*[0-9]',1));
方法二:
select * from nc_dept order by to_number(translate(id, '0123456789.' || id, '0123456789.')) asc nulls last;