使用正規表示式對數字字串欄位排序
我們在給含有數字的字串欄位進行排序時,常常會遇到一個尷尬的情況,用簡單的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字串
- 正規表示式刪除字串中非數字內容字串
- 驗證二進位制數字正規表示式
- 只能由數字和字母組成的字串正規表示式字串
- 用正規表示式提取字串中的字元(包含數字)字串字元
- 字串——正規表示式匹配字串
- 正規表示式刪除字串中的漢字字串
- 正規表示式實現的從字串中篩選出數字字串
- 驗證由數字和字母組成字串的正規表示式字串
- 正規表示式判斷是否是數字
- 正規表示式\d元字元(相對於數字0-9)字元
- JS正規表示式驗證數字(非常全)JS
- 正規表示式匹配各種型別數字型別
- js精度小數位數正規表示式判斷 - JavaScriptJSJavaScript
- 正規表示式數字數字型別驗證程式碼型別
- 正規表示式實現的數字千分位程式碼例項
- 正規表示式中 “$” 並不是表示 “字串結束字串
- 使用正規表示式替換字串的方法(replace方法)字串
- 正規表示式中使用變數擷取某字串前後內容變數字串
- js中使用正規表示式查詢字母和數字的方法JS
- 正規表示式的字串替換方法字串
- 匹配數字的正規表示式程式碼例項
- JS只能輸入數字,數字和字母等的正規表示式JS
- Java使用正規表示式判斷字串中是否包含某子字串Java字串
- 一個匹配8-16位數字和字母密碼的正規表示式密碼
- js正規表示式實現數字每隔四位用空格分隔程式碼JS
- 使用正規表示式找出所有不包含某字串的行字串
- js使用正規表示式刪除字串兩端的空格JS字串
- 常用的正規表示式大全(數字、字元、固定格式)字元
- 專案中常用的數字金額正規表示式
- 匹配字母、數字和中文字元正規表示式字元
- 正規表示式刪除字串兩端空格字串
- 正規表示式提取指定字元之間字串字元字串
- 演算法之字串——正規表示式匹配演算法字串
- 匹配雙位元組字串的正規表示式字串
- 正規表示式裡字串”不包含”匹配技巧字串
- iOS-正規表示式使用iOS