一、随机排序:

select   *   from tablename order by dbms_random.value);

这种方法一般随机取前几行记录比较有用。对于10W以上的记录,采取抽样的方式

select   *   from (select * from  tablename SAMPLE(0.01)) WHERE rownum <= 3;

二、Oracle中针对中文进行排序:

在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择:

1.按中文拼音进行排序:SCHINESE_PINYIN_M

2.按中文部首进行排序:SCHINESE_RADICAL_M

3.按中文笔画进行排序:SCHINESE_STROKE_M

而oracle 9i是对中文的排序是默认按拼音排序(并不是指NLS_SORT = SCHINESE_PINYIN_M,而是说SQL中不指定NLS_SORT时对中文列排序时默认按拼音)的,跟之前的2进制编码排序有所不同.

1.直接写在sql中,例如:

1.SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_PINYIN_M');

2.SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_STROKE_M');

3.SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_RADICAL_M');

2.配置在初始化参数NLS_SORT中,这可以在数据库创建时指定,也可以通过alter session来修改.如果是前者,则在所有session中生效.例如:

1.使用select * from NLS_SESSION_PARAMETERS;语句可以看到NLS_SORT的值.

2.更改配置文件:alter system set nls_sort='SCHINESE_PINYIN_M' scope=spfile;

3.更改session:alter SESSION set NLS_SORT = SCHINESE_PINYIN_M;

这里要额外注意一下性能问题,按oracle官方文档的解释,oracle在对中文列建立索引时,是按照2进制编码进行排序的,所以如果NLS_SORT被设置为BINARY时,排序则可以利用索引.如果不是2进制排序,而是使用上面介绍的3种针对中文的特殊排序,则oracle无法使用索引,会进行全表扫描.这点一定要注意,多用plsql工具比较一下执行效率.解决方法是,在此列上建立linguistic index.例如:CREATE INDEX nls_index ON my_table (NLSSORT(name, 'NLS_SORT = SCHINESE_PINYIN_M'));

三、自定义排序:

Oracle可借助decode函数进行排序:

select * from (
    select 'Nick' as item from dual
    union all
    select 'Viki' as item from dual
    union all
    select 'Glen' as item from dual
    union all
    select 'Robin' as item from dual
    union all
    select 'Total' as item from dual
) pre_tab
order by decode(item, 'Viki', 1, 'Glen', 2, 'Robin', 3, 'Nick', 4, 'Total', 99);

另一种写法:

SELECT * FROM (
select '海尔' v,1 o from dual
union all
select '联想' v,2 o from dual
union all
select '索尼' v,3 o from dual)
order by instr('索尼,联想,海尔',v)

oracle 中几种排序方法相关推荐

  1. 5种JavaScript中常用的排序方法

    5种JavaScript中常用的排序方法 01.冒泡排序 通过相邻数据元素的交换,逐步将待排序序列变为有序序列,如果前面的数据大于后面的数据,就将两值进行交换,将数据进行从小到大的排序,这样对数组的第 ...

  2. java中的五种排序方法_用Java排序的五种有用方法

    java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...

  3. 郑州尚学堂:JAVA常用4种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 当然 程序中最简单的使用就是:快速排序和冒泡排序,插入排序的使用更具有技巧性,选择排序则过于复杂,冗杂 ...

  4. c语言几种排序方法的比较,基于C语言的几种排序方法比较.doc

    基于C语言的几种排序方法比较.doc 基于C语言的几种排序方法比较 [摘要]文章对c语言中的冒泡排序法.选择排序法.插入排序法进行比较讨论,以试图找出最佳排序方法. [关键词]c语言;排序方法;比较 ...

  5. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  6. java oracle的2种分页方法

    java oracle的2种分页方法 一物理分页: <!-- 分页查询所有的博客信息 --><select id="findBlogs" resultType=& ...

  7. oracle数据库中spool的作用,Oracle中Spool命令如何使用 Oracle中Spool命令使用方法

    Oracle中Spool命令如何使用?本篇文章小编给大家分享一下Oracle中Spool命令使用方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 方法/步骤 首先需要明白 ...

  8. 【字符串2】(删除公共字符、合法括号序列判断、两种排序方法、密码强度等级)

    字符串题集 1. 删除公共字符 题目描述 题目分析 C++代码 2. 合法括号序列判断 题目描述 题目分析 C++代码 3. 两种排序方法 题目描述 题目分析 C++代码 4. 密码强度等级 题目描述 ...

  9. 二叉树的三种排序方法

    二叉树的三种排序方法 1.前序排列 :根-左子-右子 1->2->4->5->8->10->9->3->6->7 2.中序排列:左子-根-右子 4 ...

最新文章

  1. C++中关键字的理解--Static
  2. java after方法_spring AOP的After增强实现方法实例分析
  3. access month函数用法_学会了这7个EXCEL日期函数技巧,老板再让你加班,你找我!...
  4. java实验泛型与容器总结_【Java心得总结三】Java泛型上——初识泛型
  5. 【python工具篇】pip和pypi
  6. 安装和启动mysql
  7. 网站防采集不防搜索引擎策略
  8. Linux 性能分析工具
  9. linux 单网卡 双ip,Linux操作系统单网卡双IP的设置
  10. 超详细,如何不用任何第三方软件实现电脑与手机文件传输
  11. 【小程序】promise在小程序中的运用
  12. matlab画光顺曲线,曲线曲面
  13. ftp服务器怎么创建文件夹权限设置密码,ftp服务器 创建文件夹权限设置
  14. 通过/proc/net/dev文件来网卡流量进行监控,统计
  15. buuctf old-fashion 1 世上无难事
  16. PostgreSQL 创建分区表
  17. 无线充电比有线充电更慢吗?
  18. 微信开发者工具如何模拟调试扫描小程序二维码功能
  19. python装饰器模式带参数_python函数装饰器、类装饰器和带参数的装饰器——装饰器模式...
  20. 中标麒麟系统u盘安装_优盘安装《中标麒麟7.0(龙芯)》

热门文章

  1. 图像转成PDF变形BUG调整完成
  2. 阿里飞冰 设置 vscode 编辑器 启动脚本
  3. Vim修炼秘籍之语法篇
  4. 一个小龙盘等于300个u盘
  5. Linux 高效使用 alias 总结
  6. 大数据HADOOP框架
  7. 酒店指纹锁创业项目特点及选择方向
  8. 1014-34-首页15-计算原创微博的frame------计算cell的高度---计算 UILabel 的 CGSize 的方法...
  9. Java中遍历Set集合的方法
  10. [福利] 告诉你什么叫别人家的架构师