ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle按中文排序——NLS_SORT

oracle按中文排序——NLS_SORT

原创 Linux操作系统 作者:ziling2011 时间:2012-02-08 21:45:20 0 删除 编辑
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;
会话已更改。
scott@ziling> select * from a order by name ;
NAME
--------------------------------------------------
北京
重庆
上海
scott@ziling> alter session set nls_sort = SCHINESE_STROKE_M;
会话已更改。
scott@ziling> select * from a order by name ;
NAME
--------------------------------------------------
上海
北京
重庆
nls_sort为SCHINESE_STROKE_M是按笔画排序!
另:当nls_sort设置成除binary外的其它值时sql语句执行计划将走全表扫描,如果是binary将走索引排序,因为索引本来就是binary类型的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25989950/viewspace-715875/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-07-18

  • 博文量
    52
  • 访问量
    112161