一、随机排序:

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. @ConditionalOnProperty 详解
  2. Introspection
  3. android 首页布局变换,Android XML布局与View之间的转换
  4. RandomAccessFile 随机存取文件任意位置数据
  5. image1载入大图片时如果stretch=true,image1会显示出大图片的缩图,那么如何将这个缩图镜像复制一份赋值给另一个image2的picture呢?...
  6. Nginx+Tomcat+SSL 识别 https还是http
  7. 【操作基本数据类型的流】
  8. (转)BlackRock:全球最大资管公司如何一步步倒戈人工智能?
  9. 计算机基础知识100题 含答案,计算机基础知识练习试题及答案
  10. 人人开源项目搭建到服务器,四、人人开源搭建后台与前端 2020-06-16
  11. 谷歌开源缓存框架Guava Cache
  12. 计算机如何连接wifi台式,无线网卡怎么连接台式电脑_台式机添加无线网的方法...
  13. 《怦然心动》(Flipped) 观后感
  14. 决胜未来,2019前端开发十大战略性技术布局
  15. x77.be/bbs/index.php,试驾体验东风风行CM7 视频体验/外观内饰空间一览
  16. 炉石传说JJC英雄简评 JJC combo收集:Ver 1.0
  17. kruskal java_Kruskal算法(三)之 Java详解
  18. 2018蚌埠学院计算机分数线,蚌埠学院历年分数线 2021蚌埠学院录取分数线
  19. 浙大概率论与数理统计第4版答案
  20. Odoo 的css文件中,如何设置列宽

热门文章

  1. 将vim打造成代码阅读利器(for mac and ubuntu)
  2. NDK 1366 yep的礼物
  3. 火星发现神秘“地下水库”
  4. DWORD *类型的实参与SIZE_T *类型的形参不兼容,求指教
  5. 【fiddler】手机 APP 接口数据的抓包HTTPS配置步骤
  6. Github常用收藏及网址
  7. Linux rar 打开 压缩
  8. 【深度学习】EMD距离
  9. 2、微信小程序开发界面
  10. 网页特效精灵 v4.0.0 官方最新版