Oracle nls_sort和nlssort

本文介绍了Oracle数据库中NLSSort的功能及其使用方法,包括按拼音、部首、笔画等不同方式进行中文排序的技术细节,并提供了具体的SQL示例。
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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值