查看 oracle 相关信息
查看 NLS 相关信息
数据库级别
select * from nls_database_parameters;
会话级别
select * from nls_session_parameters;
查看版本信息
select * from v$version;
查看数据库字符集
SELECT userenv(‘language’) FROM dual;
中文排序
中文排序选项
- SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
- SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
- SCHINESE_PINYIN_M 按照拼音排序
设置排序方式
- 当前会话级别
alter session set nls_sort = SCHINESE_PINYIN_M;
- 语句级别
select * from dept order by nlssort(name,’NLS_SORT=SCHINESE_PINYIN_M’);
- 系统级别(在数据库端设置)
set NLS_SORT=SCHINESE_PINYIN_M ;
- 设置环境变量(网上有这种说法,但是并不生效)
-Duser.language=zh -Duser.region=CN -Duser.country=CN
定义
NLS_SORT 定义了 order by
语句的整理顺序:
- 如果 NLS_SORT 为
BINARY sort
,则order by
排序基于 字符的numeric value
顺序来进行排序(binary排序要求更少的系统负载) - 如果 NLS_SORT 为
linguistic sort
,order by
排序基于 字符的linguistic sort
定义的排序顺序。(Most (but not all) languages supported by the NLS_LANGUAGE parameter also support a linguistic sort with the same name.)
NLS_SORT 的默认值是由 NLS_LANGUAGE 决定的。
索引
索引是根据binary order key
排序的。
当将 NLS_SORT 设置为非 BINARY SORT
时: 优化器会在执行计划中,进行全表扫描和全排序操作。
当将 NLS_SORT 设置为 BINARY SORT
时: 优化器可以使用索引来进行 order by
排序。
若想建立 按拼音排序的索引: 可以建立 linguistic index
CREATE INDEX nls_index ON my_table (NLSSORT(name, ‘NLS_SORT = SCHINESE_PINYIN_M’));
资料
http://wuaner.iteye.com/blog/681614
https://blog.csdn.net/qincidong/article/details/8998284
https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch3globenv.htm#NLSPG003
https://docs.oracle.com/cd/B19306_01/server.102/b14225/applocaledata.htm
https://www.oracle.com/technetwork/testcontent/sort-083215.html