1
創(chuàng)新互聯(lián)是一家專業(yè)提供興安企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站制作、成都做網(wǎng)站、H5技術、小程序制作等業(yè)務。10年已為興安眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
2
3
4
5
6
7
8
9
10
11
普通排序SQL是這樣的:SELECT NAME FROM TABLE ORDER BY NAME;這時候我們需要按照自己定義的NAME的排序規(guī)則進行排序,如按照某個字典ARRAY進行排序,就需要用個臨時表來完成如建立表:C_SORT_Tcreatetable C_SORT_T
(
SORT_ID NUMBER(10),
SORT_NAME VARCHAR2(20),
SORT_SEQ NUMBER(10)
)然后把原有的SQL聯(lián)合排序表進行查詢,然后用SORT_SEQ排序就可以了。 如果是SORT array是不固定,而是在排序前傳入SQL?該怎么辦?如果排序的array不大的話,可以用DECODE來達到要求,如下:SELECT NAME FROM TABLE排序:SELECT NAME,DECODE(NAME,"ARRAY[0]",1,"ARRAY[1]",2,....,9999) SEQ FROM TABLE ORDER BY SEQ
---
SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序)排序
SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序
SCHINESE_PINYIN_M 按照拼音排序
Oracle9i之前,中文是按照二進制編碼進行排序的。在oracle9i中新增了按照拼音、部首、筆畫排序功能。
1、設置NLS_SORT參數(shù)值
SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序)排序 SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序 SCHINESE_PINYIN_M 按照拼音排序
2、Session級別的設置,修改ORACLE字段的默認排序方式:
按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;
按筆畫:alter session set nls_sort = SCHINESE_STROKE_M;
按偏旁:alter session set nls_sort = NLS_SORT=SCHINESE_RADICAL_M;
3、語句級別設置排序方式:
按照筆劃排序 select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');
按照部首排序 select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
按照拼音排序 此為系統(tǒng)的默認排序方式
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');
4、修改系統(tǒng)參數(shù)(數(shù)據(jù)庫所在操作系統(tǒng)):
set NLS_SORT=SCHINESE_RADICAL_M export NLS_SORT (sh) setenv NLS_SORT SCHINESE_RADICAL_M (csh) HKLC\SOFTWARE\ORACLE\home0\NLS_SORT (win注冊表)
oracle按照指定順序進行排序
實驗如下:
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.插入數(shù)據(jù)
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函數(shù)在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定義某個字符的排序位置類似的實現(xiàn)排序方式
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');
可以通過 “order by 字段名 asc (desc)” 命令進行排序。
sql:select * from tablename order by id DESC;
用 DESC 表示按倒序排序(即:從大到小排序) ,用 ACS 表示按正序排序(即:從小到大排序)。
1、首先在oracle建立數(shù)據(jù)表的時候,對表的命名有以下規(guī)范:以字母開頭表名長度不能超過30個字符,不能使用oracle保留關鍵字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接報錯的。如下圖使用了? *。
3、在建立表的時候,數(shù)字也是不能使用表名的開始的。
4、但如果使用雙引號對表名進行規(guī)范的話,是可以建立以數(shù)字或者包含特殊字符的表名的。
5、過這樣建立的表名,在查詢數(shù)據(jù)的時候是非常麻煩的,查詢時也要加雙引號。而且這樣建立的表名,在項目運行的過程中也非常容易造成各種麻煩,所以盡量不要使用。
1.'gyzl_bzpwl_tb'
為要修改的表名,注意表名一定要大寫!此句可以獲取表的id。
select
object_id
from
all_objects
where
object_name='gyzl_bzpwl_tb'
2.查看表中的字段名和序號,其中后面的條件就是我們第一步中查出來的表id
select
obj#,col#,name
from
sys.col$
where
obj#=38370;
3.直接修改表
sys.col,col#列就是字段的順序列,可以通過修改這列的值來實現(xiàn)字段順序的修改。
新聞名稱:oracle怎么根據(jù)順序排序 Oracle排序語句
文章起源:http://www.rwnh.cn/article36/hhgisg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、網(wǎng)站內鏈、靜態(tài)網(wǎng)站、網(wǎng)站維護、Google、網(wǎng)頁設計公司
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)