ORACLE中文字段排序

Oracle IT敢客 1年前 (2017-10-11) 10003次浏览 已收录 2个评论 扫描二维码

做一个2个数据库间数据比较工具时遇到ORACLE中汉字排序的问题。

使用一下SQL

ORACLE 中文字段排序

select * from T_0303003 order by stock_holder

进行选取数据时(stock_holder为存放中文的字段),结果发现两库返回的记录顺序不一致。琢磨之后应该为字符集问题,一个库字符集为系统默认字符集,另一个库为UTF-8字符集。查找资料后发现,对于中文字段的排序,应该使用以下方式:

ORACLE 中文字段排序

— 按拼音排序 (系统默认)

ORACLE 中文字段排序

select * from T_0303003 order by nlssort(stock_holder,'NLS_SORT=SCHINESE_PINYIN_M');

ORACLE 中文字段排序

— 按部首排序 

ORACLE 中文字段排序

select * from T_0303003 order by nlssort(stock_holder,'NLS_SORT=SCHINESE_RADICAL_M');

ORACLE 中文字段排序

— 按笔画排序 

ORACLE 中文字段排序

select * from T_0303003 order by nlssort(stock_holder,'NLS_SORT=SCHINESE_STROKE_M');

 

alter session set nls_comp='LINGUISTIC';
alter session set nls_sort='SCHINESE_PINYIN_M';
SQL> show parameter nls_
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_calendar                         string
nls_comp                             string      BINARY
nls_currency                         string
nls_date_format                      string
nls_date_language                    string
nls_dual_currency                    string
nls_iso_currency                     string
nls_language                         string      AMERICAN
nls_length_semantics                 string      BYTE
nls_nchar_conv_excp                  string      FALSE
nls_numeric_characters               string
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_sort                             string
nls_territory                        string      AMERICA
nls_time_format                      string
nls_time_tz_format                   string
nls_timestamp_format                 string
nls_timestamp_tz_format              string

 

 

 注意以下内容:

alter system set nls_comp='LINGUISTIC' scope=spfile;  --注意会吃性能。
alter system set nls_sort='SCHINESE_PINYIN_M' scope=spfile;


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ORACLE 中文字段排序
喜欢 (156)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 博客不少,这里独好!丁酉年(鸡)八月廿五 2017-10-14
    营销软件下载2017-10-14 11:03 回复 Windows 7 | 搜狗浏览器 2.X
  2. 博客不错,大爱哦!
    尚吾康网2017-10-13 16:06 回复 Windows 7 | 搜狗浏览器 2.X