oracle按照指定順序進行排序

2022-05-06 17:27:09 字數 1391 閱讀 8244

之前在網上查了下按照指定順序進行排序的方法,根據charindex來處理排序,但是在oracle發現不行,因為oracle沒有charindex函式,然後使用instr代替了charindex,然後又在網上搜了另外一種方

實驗如下:

1.新建表

create table br_dict(

id number primary key not null,

d_item varchar2(32),

d_value varchar2(32),

d_type varchar2(32),

d_sort number

)2.插入資料

insert into br_dict(id, d_item,d_value,d_type,d_sort) values

(10, '10', '測試1', '', 0);

insert into br_dict(id, d_item,d_value,d_type,d_sort) values

(11, '11', '測試2', '', 1);

insert into br_dict(id, d_item,d_value,d_type,d_sort) values

(12, '12', '測試3', '', 2);

insert into br_dict(id, d_item,d_value,d_type,d_sort) values

(13, '13', '測試4', '', 3);

insert into br_dict(id, d_item,d_value,d_type,d_sort) values

(14, '14', '測試5', '', 4);

insert into br_dict(id, d_item,d_value,d_type,d_sort) values

(15, '15', '測試6', '', 5);

3.兩種查詢方式

a.instr函式在oracle/plsql中是返回要擷取的字串在源字串中的位置來自定義排序方式

select * from br_dict d where d.d_value like '%測試%' order by instr( '3,1,2,0,5,4',rtrim(cast(d_sort as nchar)));

b.執行decode定義某個字元的排序位置類似的實現排序方式

select * from br_dict d where d.d_value like '%測試%' order by decode(d_sort, '3', '01', '2', '02', '1', '03', '0', '04', '5', '05', '4', '06');

具體實現效率我資料量很小,沒去分析和試驗,有沒有大神分析的

mysql查詢按照指定欄位的指定順序進行排序

之前我們已經了解的mysql按照中文進行排序的實現方法了 那麼如何按照指定欄位的指定順序進行排序呢?例如有乙個使用者表user,有id,username,status欄位,status的字段值有1,2,3,4四種情況,如何將使用者表中的資料按照status欄位的2,4,1,3順序進行排序呢?這時候需...

sql 按照任意順序進行排序

建立一張表 create table stut id int,na varchar 20 插入4條資料。insert into stut values 1,aa insert into stut values 2,bb insert into stut values 3,df insert into...

MySql查詢結果按照指定順序排序

mysql這功能做的很好用啊!讓查詢結果按照指定順序排序 表結構如下 mysql select from test id name 1 test1 2 test2 3 test3 4 test4 5 test5 執行以下sql mysql select from test where id in 3...