Oracle nls_sort和nlssort

Oracle nls_sort和nlssort 排序功能介绍(2012-03-21 17:05:33)转载▼标签: it 分类: 数据库
(1)ALTER SESSION SET NLS_SORT=''; 排序影响整个会话

Oracle9i之前,中文是按照二进制编码进行排序的。



  在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值



  SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序



  SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序



  SCHINESE_PINYIN_M 按照拼音排序

oracle9i中新增了按照拼音、部首、笔画排序功能

拼音 SELECT * FROM TEAM ORDER BY NLSSORT(队名,'NLS_SORT = SCHINESE_PINYIN_M')

笔划 SELECT * FROM TEAM ORDER BY NLSSORT(队名,'NLS_SORT = SCHINESE_STROKE_M')

部首 SELECT * FROM TEAM ORDER BY NLSSORT(队名,'NLS_SORT = SCHINESE_RADICAL_M')





(2)又如在视图中查询获取道路列表:

sSql = string.Format("select distinct({0}) from {1} order by nlssort({0},'NLS_SORT=SCHINESE_PINYIN_M')", sFieldDL, sViewDL);



(3)又如

一个表中的数据是这样的:

PROJECTNO

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

钦市PC2010-5

钦市PC2011-6

钦市PC2011-40

钦南PC2011-5

钦南GC2011-5

钦市PC2011-5(还有很多)数据前2个字是市区名,后面的是文件名“-”后面的是第几号文件,我想知道如何用SQL语句将他们升序排序,需要先排列市区名,市区名相同了在升序排列后面的文件名,文件名相同了在排列后面的文件编号名。

注意:单单用select projectno from dual order by projectno asc 是不能实现的。



可使用

select projectno from dual order by substring(projectno ,1,2) asc ,substring(projectno ,3,6) asc ,substring(projectno ,9,2) asc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值