oracle的null排序,oracle 排序(中文,null的处理)

oracle在9i之前是对汉字的排序是按照二进制编码进行排序的,很不适合我们的国情,在oracle9i之后,汉字的排序方式有了以下三种方式:

1、使用拼音排序       NLS_SORT=SCHINESE_PINYIN_M

2、使用笔画排序       NLS_SORT=SCHINESE_STROKE_M 第一顺序笔画,第二顺序部首;

3、使用偏旁部首排序   NLS_SORT=SCHINESE_RADICAL_M 第一顺序部首,第二顺序笔画;

这样,就可以在查询的时候,指定汉字的排序方式,设定方式可以分为以下三个级别:

1、语句级别设置排序方式:

按照笔划排序:

select * from table order by nlssort(col,'NLS_SORT=SCHINESE_STROKE_M');

按照部首排序:

select * from table order by nlssort(col,'NLS_SORT=SCHINESE_RADICAL_M');

按照拼音排序:

select * from table order by nlssort(col,'NLS_SORT=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、修改系统参数(数据库所在操作系统):

set NLS_SORT=SCHINESE_RADICAL_M ;export NLS_SORT (sh)setenv NLS_SORT SCHINESE_RADICAL_M (csh)  HKLCSOFTWAREORACLEhome0NLS_SORT(win注册表);

网上有人说,oracle9i之后对于汉字的默认排序是拼音排序(SCHINESE_PINYIN_M),但是经过我的实际验证,发现不是,排序比较乱,也不知道是不是按照二进制编码进行排序的。

使用如下方法可以查看oracle的一些默认参数(注意标红的参数值):

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as system

SQL>

SQL> select * from nls_database_parameters;

PARAMETER                      VALUE

------------------------------ ----------------------------------------------------

NLS_LANGUAGE                   AMERICAN

NLS_NCHAR_CHARACTERSET         UTF8

NLS_TERRITORY                  AMERICA

NLS_CURRENCY                   $

NLS_ISO_CURRENCY               AMERICA

NLS_SORT                       BINARY

NLS_NUMERIC_CHARACTERS         .,

NLS_CHARACTERSET               AL32UTF8

NLS_CALENDAR                   GREGORIAN

NLS_DATE_FORMAT                DD-MON-RR

NLS_DATE_LANGUAGE              AMERICAN

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_COMP                       BINARY

NLS_LENGTH_SEMANTICS           BYTE

NLS_NCHAR_CONV_EXCP            FALSE

NLS_RDBMS_VERSION              10.2.0.1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值