Oracle下的中文排序
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');
注意,该
SQL指令并非标准指令,在SQLServer下面的实现方式并不相同。
转自:http://blog.chinaunix.net/u/28618/showart_464260.html
相关文档:
① 只需在文件 TNSNames.ora 中加入以下节点,即可成功配置监听
ORCL190 = //红色部门为连接监听名字
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.190)(PORT = 1521)) //红色部门为服务器所在IP地址 1521为端口号
(CONNECT_DATA ......
1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection ......
Oracle中的Hash Join祥解
一、 hash join概念
Hashjoin(HJ)是一种用于equi-join(而anti-join就是使用NOT IN时的join)的技术。
在Oracle中,它是从7.3开始引入的,以代替sort-merge和nested-loop join方式,
提高效率。在CBO(hash join只有在CBO才可能被使用到)模式下,优化器计算代 ......
1.在ORACLE中实现SELECT TOP N
由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。
简单地说,实现方法如下所示:
SELECT 列名1...列名n from
(SELECT 列 ......