当前位置:数据库 > Oracle >>

Oracle nls_sort和nlssort排序功能介绍

Oracle nls_sort和nlssort排序功能介绍
 
(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
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,