使用正規表示式對數字字串欄位排序
我們在給含有數字的字串欄位進行排序時,常常會遇到一個尷尬的情況,用簡單的order by無法給這些欄位完整的排序,如以下查詢效果,不符合我們的預期:
select * from tb1 order by name;
怎麼辦呢?用正規表示式可以解決這個問題,下面給個完整例子:
建立測試表
create table tb1(name varchar2(50), val number);
insert into tb1 values('rec7', 100);
insert into tb1 values('rec8', 100);
insert into tb1 values('rec3', 100);
insert into tb1 values('rec5', 100);
insert into tb1 values('rec2', 100);
insert into tb1 values('rec9', 100);
insert into tb1 values('rec10', 100);
insert into tb1 values('rec4', 100);
insert into tb1 values('', 100);
insert into tb1 values('rec6', 100);
insert into tb1 values('rec1', 100);
commit;
按照第一個欄位排序輸出
select * from tb1 order by to_number(regexp_substr(name, '[0-9]*[0-9]', 1))
也可以用以下形式,效果是一樣的
select * from tb1 order by to_number(translate(name, '0123456789.' || name, '0123456789.')) asc nulls last
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2636391/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- Python正規表示式匹配字串中的數字Python字串
- 驗證二進位制數字正規表示式
- 匹配n位正整數正規表示式
- 匹配純數字正規表示式
- 字串——正規表示式匹配字串
- 正規表示式個位數補零
- 正規表示式刪除字串中的漢字字串
- 匹配至少n位整數正規表示式
- 正規表示式判斷是否是數字
- 校驗英文和數字正規表示式
- 驗證數字的正規表示式集
- 正規表示式\d元字元(相對於數字0-9)字元
- 正規表示式匹配漢字
- js精度小數位數正規表示式判斷 - JavaScriptJSJavaScript
- JS正規表示式驗證數字(非常全)JS
- 驗證數字金額的正規表示式
- 使用正規表示式替換字串的方法(replace方法)字串
- 正規表示式中 “$” 並不是表示 “字串結束字串
- 匹配正整數正規表示式
- 正規表示式中使用變數擷取某字串前後內容變數字串
- 校驗帶有兩位小數正規表示式
- 正規表示式的字串替換方法字串
- 匹配非零開頭的最多帶兩位小數的數字正規表示式
- js中使用正規表示式查詢字母和數字的方法JS
- 使用正規表示式找出所有不包含某字串的行字串
- 匹配小數正規表示式
- 匹配負數正規表示式
- 匹配整數正規表示式
- 匹配自然數正規表示式
- 一個匹配8-16位數字和字母密碼的正規表示式密碼
- js正規表示式實現數字每隔四位用空格分隔程式碼JS
- 正規表示式刪除字串兩端空格字串
- 演算法之字串——正規表示式匹配演算法字串
- 正規表示式提取指定字元之間字串字元字串
- iOS-正規表示式使用iOS
- 常用的正規表示式大全(數字、字元、固定格式)字元
- 匹配字母、數字和中文字元正規表示式字元