oracle按中文排序——NLS_SORT
视图v$nls_parameters中参数字段NLS_SORT默认为binary
但此时无法对中文进行排序如:
with t as
(
select '北京' name from dual union all
select '上海' from dual union all
select '重庆' from dual
)
select name from t order by name ;
NAME
--------------------------------------------------
北京
上海
重庆
不是按我想要的顺序排的,此时将nls_sort改成
scott@ziling> alter session set nls_sort = SCHINESE_PINYIN_M;
会话已更改。
NAME
--------------------------------------------------
北京
重庆
上海
scott@ziling> alter session set nls_sort = SCHINESE_STROKE_M;
会话已更改。
NAME
--------------------------------------------------
上海
北京
重庆
nls_sort为SCHINESE_STROKE_M是按笔画排序!
另:当nls_sort设置成除binary外的其它值时sql语句执行计划将走全表扫描,如果是binary将走索引排序,因为索引本来就是binary类型的。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25989950/viewspace-715875/
,如需转载,请注明出处,否则将追究法律责任。