1、首先在oracle建立數(shù)據(jù)表的時候,對表的命名有以下規(guī)范:以字母開頭表名長度不能超過30個字符,不能使用oracle保留關鍵字,可以使用A-Z,a-z,0-9,#,$等。
創(chuàng)新互聯(lián)建站長期為近千家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為大通企業(yè)提供專業(yè)的做網站、成都做網站,大通網站改版等技術服務。擁有10多年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
2、如果表名中包含特殊字符是直接報錯的。如下圖使用了? *。
3、在建立表的時候,數(shù)字也是不能使用表名的開始的。
4、但如果使用雙引號對表名進行規(guī)范的話,是可以建立以數(shù)字或者包含特殊字符的表名的。
5、過這樣建立的表名,在查詢數(shù)據(jù)的時候是非常麻煩的,查詢時也要加雙引號。而且這樣建立的表名,在項目運行的過程中也非常容易造成各種麻煩,所以盡量不要使用。
1
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 按照拼音排序
可以通過 “order by 字段名 asc (desc)” 命令進行排序。
sql:select * from tablename order by id DESC;
用 DESC 表示按倒序排序(即:從大到小排序) ,用 ACS 表示按正序排序(即:從小到大排序)。
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注冊表)
對于排序分析,應用的業(yè)務分析場景很多,例如所有銷售大區(qū)的TOP5、按具體規(guī)則對數(shù)據(jù)集進行重新排序編號等,這些業(yè)務場景采用分析函數(shù)中排序函數(shù),將很方便簡單。
當前常用的排序類分析函數(shù)包括:row_number()、rank()、dense_rank(),這三個函數(shù)都可應用在排序場景中,但 又有些許不同。
特點:對分組后的排序結果進行遞增編號,出現(xiàn)同值的也是遞增處理。
rank()特點:按分組后的排序結果進行遞增編號,如出現(xiàn)相同值則序號一致,但相鄰出現(xiàn)的不同值序號將從rown+N開始(rown為前一個值的序號,N為前一個值相同的個數(shù))。
dense_rank()特點:和rank()相似,按分組后的排序結果進行遞增編號,如出現(xiàn)相同值則序號一致,但相鄰出現(xiàn)的不同值序號將從rown+1開始。
1.row_number()應用于 不區(qū)分同值排序 的業(yè)務場景;
2.rank()dense_rank()應用于 區(qū)分同值排序 的業(yè)務場景,至于用rank和dense_rank,則要看對同值排序后對序號遞增方式的具體要求來定。
有了上述三個函數(shù),對于日常公司分析大區(qū)銷售排名、銷售代表排名、部門費用項排名等等,將會非常的方便快捷。