ORDER BY的含義就是通過某個字段進(jìn)行排序(默認(rèn)是ASC,可以省略)。\r\nsql:select * from scores order by score DESC;\r\n以上語句就是通過score字段進(jìn)行降序排序。\r\nsql:select * from scores order by score ;\r\n以上語句就是通過score字段進(jìn)行升序排序。\r\n備注:DESC表示降序,ASC表示升序。
創(chuàng)新互聯(lián)建站專注于潁州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開發(fā)。潁州網(wǎng)站建設(shè)公司,為潁州等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
可以通過 “order by 字段名 asc (desc)” 命令進(jìn)行排序。
sql:select * from tablename order by id DESC;
用 DESC 表示按倒序排序(即:從大到小排序) ,用 ACS 表示按正序排序(即:從小到大排序)。
1、首先在oracle建立數(shù)據(jù)表的時候,對表的命名有以下規(guī)范:以字母開頭表名長度不能超過30個字符,不能使用oracle保留關(guān)鍵字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接報錯的。如下圖使用了? *。
3、在建立表的時候,數(shù)字也是不能使用表名的開始的。
4、但如果使用雙引號對表名進(jìn)行規(guī)范的話,是可以建立以數(shù)字或者包含特殊字符的表名的。
5、過這樣建立的表名,在查詢數(shù)據(jù)的時候是非常麻煩的,查詢時也要加雙引號。而且這樣建立的表名,在項目運行的過程中也非常容易造成各種麻煩,所以盡量不要使用。
Oracle9i之前,中文是按照二進(jìn)制編碼進(jìn)行排序的。在oracle9i中新增了按照拼音、部首、筆畫排序功能。
1、設(shè)置NLS_SORT參數(shù)值
SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序)排序 SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序 SCHINESE_PINYIN_M 按照拼音排序
2、Session級別的設(shè)置,修改ORACLE字段的默認(rèn)排序方式:
按拼音: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、語句級別設(shè)置排序方式:
按照筆劃排序 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)的默認(rèn)排序方式
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注冊表)
測試中文排序的數(shù)據(jù)庫版本
SQL select * from v$version;
BANNER
Oracle Database g Enterprise Edition Release Production
PL/SQL Release Production
CORE??? ????? Production
TNS for Linux: Version Production
NLSRTL Version Production
創(chuàng)建測試表
create table player (id number( ) name varchar ( ));
檢查字符集配置
確認(rèn)數(shù)據(jù)庫字符集 american_america AL UTF
SQL? select? name value$? from? props$;
NAME?????????????????????????? VALUE$
DICT BASE?????????????????????
DEFAULT_TEMP_TABLESPACE??????? TEMP
DEFAULT_PERMANENT_TABLESPACE?? USERS
DEFAULT_EDITION??????????????? ORA$BASE
Flashback Timestamp TimeZone?? GMT
TDE_MASTER_KEY_ID
DEFAULT_TBS_TYPE?????????????? SMALLFILE
NLS_LANGUAGE?????????????????? AMERICAN
NLS_TERRITORY????????????????? AMERICA
NLS_CURRENCY?????????????????? $
NLS_ISO_CURRENCY?????????????? AMERICA
NLS_NUMERIC_CHARACTERS????????
NLS_CHARACTERSET?????????????? AL UTF
NLS_CALENDAR?????????????????? GREGORIAN
NLS_DATE_FORMAT??????????????? DD MON RR
NLS_DATE_LANGUAGE????????????? AMERICAN
NLS_SORT?????????????????????? BINARY
NLS_TIME_FORMAT??????????????? HH MI SSXFF AM
NLS_TIMESTAMP_FORMAT?????????? DD MON RR HH MI SSXFF AM
NLS_TIME_TZ_FORMAT???????????? HH MI SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT??????? DD MON RR HH MI SSXFF AM TZR
NLS_DUAL_CURRENCY????????????? $
NLS_P?????????????????????? BINARY
NLS_LENGTH_SEMANTICS?????????? BYTE
NLS_NCHAR_CONV_EXCP??????????? FALSE
NLS_NCHAR_CHARACTERSET???????? AL UTF
NLS_RDBMS_VERSION?????????????
GLOBAL_DB_NAME???????????????? ORA G
EXPORT_VIEWS_VERSION??????????
WORKLOAD_CAPTURE_MODE
WORKLOAD_REPLAY_MODE
DBTIMEZONE???????????????????? :
rows selected
SQL
深入確認(rèn)字符集
SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET
DECODE(TYPE#
DECODE(CHARSETFORM VARCHAR NVARCHAR UNKOWN )
DECODE(CHARSETFORM VARCHAR NCHAR VARYING UNKOWN )
DECODE(CHARSETFORM CHAR NCHAR UNKOWN )
DECODE(CHARSETFORM CLOB NCLOB UNKOWN )) TYPES_USED_IN
FROM SYS COL$
WHERE CHARSETFORM IN ( )
AND TYPE# IN ( );
確認(rèn)操作系統(tǒng)字符集設(shè)置
[ora g@bj ~]$ export NLS_LANG=american_america al utf
填寫測試數(shù)據(jù)
SQL insert into player values ( 下午啦 );
row created
SQL insert into player values ( 八千米死亡線 );
SQL set pagesize
SQL? select * from player;
ID NAME
中文
中文拼音
筆畫輸入法
一
二
三
四
五
六
七
八
八
九
十
測試啊
下午啦
八千米死亡線
rows selected
SQL
開始測試 發(fā)現(xiàn)三個查詢語句返回的結(jié)果一致
SQL select * from player order by??? nlssort(name NLS_SORT=SCHINESE_RADICAL_M );
ID NAME
一
十
四
七
六
五
三
筆畫輸入法
八
九
八
二
中文
下午啦
中文拼音
測試啊
八千米死亡線
rows selected
SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );
ID NAME
一
十
四
七
六
五
三
筆畫輸入法
八
九
八
二
中文
下午啦
中文拼音
測試啊
八千米死亡線
rows selected
SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );
ID NAME
一
十
四
七
六
五
三
筆畫輸入法
八
九
八
二
中文
下午啦
中文拼音
測試啊
八千米死亡線
rows selected
囧 疑似碰上bug 切換到 gR 下看看
SQL select * from v$version;
BANNER
Oracle Database g Enterprise Edition Release Prod
PL/SQL Release Production
CORE??? ??? Production
TNS for Linux: Version Production
NLSRTL Version Production
SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );
ID NAME
八
八
八千米死亡線
筆畫輸入法
測試啊
二
九
六
七
三
十
四
五
下午啦
一
中文
中文拼音
rows selected
SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );
ID NAME
一
七
二
九
八
八
八千米死亡線
十
三
下午啦
五
中文
中文拼音
六
四
測試啊
筆畫輸入法
測試服務(wù)器
rows selected
SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_RADICAL_M );
ID NAME
一
七
二
三
下午啦
五
中文
中文拼音
九
八
八
八千米死亡線
六
十
四
測試啊
筆畫輸入法
測試服務(wù)器
rows selected
SQL
這個結(jié)果似乎比較符合預(yù)期結(jié)果
NLS_SORT=SCHINESE_RADICAL_M? 按照部首排序
NLS_SORT=SCHINESE_STROKE_M 按照筆畫排序
lishixinzhi/Article/program/Oracle/201311/17664