数据库及ADO.NET---- ABCDEFGHI...abcdef 变为AaBbCdDdEeFf........排序规则的变化

ORACLE中没有COLLATE来进行字符集的转换,用NLS 如下所示:
嵌入语句中的NLS
select T_PMS_PERSON.*
from T_PMS_PERSON
order by nlssort(T_PMS_PERSON.NAME,'nls_sort=schinese_pinyin_m')
查看数据库时用的NLS
alter session set nls_sort='schinese_pinyin_m'          select * from ......
1。(session也可以为instance,database共三个级别的)
2。(系统默认为binary排序) 

以上为LEO总结,以下为LEO在网上找的一些参考:

COLLATE Chinese_PRC_CI_AS 
select upper(substr(T_PMS_PERSON.NAME,0,1)),

 alter session set nls_sort='schinese_pinyin_m'

alter session set nls_sort='schinese_pinyin_m';

select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');

Oracle9i之前,中文是按照二进制编码进行排序的。
在Oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序,系统的默认排序方式为拼音排序

举例如下:
表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划、部首和拼音排序。
1: //按照笔划排序
2: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');
3: //按照部首排序
4: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
5: //按照拼音排序,此为系统的默认排序方式
6: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');

我的oracle9205默认的NLS_SORT=BINARY,(database,instance,session三个级别),
为了使汉字按拼音排序,我修改instance级NLS_SORT=SCHINESE_PINYIN_M,
排序时session级的NLS_SORT=BINARY,于是我使用数据库触发器在登录后立即修改session级
的NLS_SORT=SCHINESE_PINYIN_M,SQLPLUS之类的工具拼音排序正确了。
但是当我通过Jdbc连接排序时仍然是BINARY,通过Jdbc连接查询session级NLS_SORT=BINARY。
不知道有没有办法设置Jdbc连接的拼音排序?


  alter session set nls_sort='schinese_pinyin_m'
select * from t1_stu t order by sname

 alter session set nls_sort='binary'
 select * from t1_stu t order by sname

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值