重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
ORDER BY的含義就是通過某個字段進行排序(默認是ASC,可以省略)。\r\nsql:select * from scores order by score DESC;\r\n以上語句就是通過score字段進行降序排序。\r\nsql:select * from scores order by score ;\r\n以上語句就是通過score字段進行升序排序。\r\n備注:DESC表示降序,ASC表示升序。
創新互聯建站專注于潁州企業網站建設,成都響應式網站建設公司,商城系統網站開發。潁州網站建設公司,為潁州等地區提供建站服務。全流程按需求定制網站,專業設計,全程項目跟蹤,創新互聯建站專業和態度為您提供的服務
可以通過 “order by 字段名 asc (desc)” 命令進行排序。
sql:select * from tablename order by id DESC;
用 DESC 表示按倒序排序(即:從大到小排序) ,用 ACS 表示按正序排序(即:從小到大排序)。
1、首先在oracle建立數據表的時候,對表的命名有以下規范:以字母開頭表名長度不能超過30個字符,不能使用oracle保留關鍵字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接報錯的。如下圖使用了? *。
3、在建立表的時候,數字也是不能使用表名的開始的。
4、但如果使用雙引號對表名進行規范的話,是可以建立以數字或者包含特殊字符的表名的。
5、過這樣建立的表名,在查詢數據的時候是非常麻煩的,查詢時也要加雙引號。而且這樣建立的表名,在項目運行的過程中也非常容易造成各種麻煩,所以盡量不要使用。
Oracle9i之前,中文是按照二進制編碼進行排序的。在oracle9i中新增了按照拼音、部首、筆畫排序功能。
1、設置NLS_SORT參數值
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');
按照拼音排序 此為系統的默認排序方式
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');
4、修改系統參數(數據庫所在操作系統):
set NLS_SORT=SCHINESE_RADICAL_M export NLS_SORT (sh) setenv NLS_SORT SCHINESE_RADICAL_M (csh) HKLC\SOFTWARE\ORACLE\home0\NLS_SORT (win注冊表)
測試中文排序的數據庫版本
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
創建測試表
create table player (id number( ) name varchar ( ));
檢查字符集配置
確認數據庫字符集 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
深入確認字符集
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 ( );
確認操作系統字符集設置
[ora g@bj ~]$ export NLS_LANG=american_america al utf
填寫測試數據
SQL insert into player values ( 下午啦 );
row created
SQL insert into player values ( 八千米死亡線 );
SQL set pagesize
SQL? select * from player;
ID NAME
中文
中文拼音
筆畫輸入法
一
二
三
四
五
六
七
八
八
九
十
測試啊
下午啦
八千米死亡線
rows selected
SQL
開始測試 發現三個查詢語句返回的結果一致
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
一
七
二
九
八
八
八千米死亡線
十
三
下午啦
五
中文
中文拼音
六
四
測試啊
筆畫輸入法
測試服務器
rows selected
SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_RADICAL_M );
ID NAME
一
七
二
三
下午啦
五
中文
中文拼音
九
八
八
八千米死亡線
六
十
四
測試啊
筆畫輸入法
測試服務器
rows selected
SQL
這個結果似乎比較符合預期結果
NLS_SORT=SCHINESE_RADICAL_M? 按照部首排序
NLS_SORT=SCHINESE_STROKE_M 按照筆畫排序
lishixinzhi/Article/program/Oracle/201311/17664