oracle 中查询结果的排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 中查询结果的排序相关的知识,希望对你有一定的参考价值。

1,使用order by

汉字的编码规则,有提到如下一句:    “一级汉字,是最常用的汉字,按汉语拼音字母顺序排列,共3755个;二级汉字,属于次常用汉字,按偏旁部首的笔划顺序排列,共3008个,order采用的是利用ASCII编码来排序的明所以数字在字母前面,字母在汉字前面,一般汉字都是一级汉字,是按拼音来的,所以误以为order是按拼音的,实际不是,可以对order进行指定。

按照拼音排序

ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_PINYIN_M‘)

按照部首顺序

ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_RADICAL_M‘)

按照笔画进行排序

ORDER BY nlssort(NAME, ‘NLS_SORT=SCHINESE_STROKE_M‘)

 

一般默认为是升序排序,可以对排序进行指定

SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;

DESC为降序,ASC为升序

如果要对多个列进行排序则

SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;

先按depptno排序,如果deptno相等,则按hiredate

也可以对组合结果排序,如对某两行的乘积排序

    1. SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp   
    2.   ORDER BY total; 

2在项目进行过程中,遇到了一个生僻字,在组成json数据 时候,采用了冒泡排序,将json数组里面的某一字段进行排序,将这个生僻字用其他常用字的形式进行排序,得到结果具体代码为

 
    public JSONArray bubbleSort(JSONArray args) throws JSONException ,UnsupportedEncodingException {//冒泡排序算法   
        for(int i=0;i<args.length()-1;i++){
               for(int j=i+1;j<args.length();j++){   
                   JSONObject strResult1 = new JSONObject();
                   strResult1 =  args.getJSONObject(i);
                   String s1= strResult1.getString("streetname");
                   JSONObject strResult2 = new JSONObject();
                   strResult2 =  args.getJSONObject(j);
                   String s2= strResult2.getString("streetname");
                   if(s1.equals("垡头"))
                       s1="发头";
                   if(s2.equals("垡头"))
                       s2="发头";
                   String s3,s4;
                    byte[] b1 = null;  
                    byte[] b2 = null;
                    StringBuffer sb1 = new StringBuffer();
                    StringBuffer sb2 = new StringBuffer();
                    b1 = s1.getBytes("gb2312");
                    b2 = s2.getBytes("gb2312");
                    for (int k = 0; k < b1.length; k++) {  
                        sb1.append(Integer.toHexString(b1[k] & 0xFF));  
                    } 
                    for (int k = 0; k < b2.length; k++) {  
                        sb2.append(Integer.toHexString(b2[k] & 0xFF));  
                    }
                    s3= sb1.toString();
                    s4= sb2.toString();
                   if (s3.compareTo(s4)>0){   
 
                       args.put(i, strResult2);
                       args.put(j, strResult1);
                       
                     
                       }   
            }  
       }  
       return args;  
}
    

 

以上是关于oracle 中查询结果的排序的主要内容,如果未能解决你的问题,请参考以下文章

Oracle分页查询中排序与效率问题

解决Oracle分页查询中排序与效率问题

Oracle查询优化改写--------------------给查询结果排序

Oracle 对查询结果集操作

ORACLE 查询去重保留第一条排序

Oracle的中文排序问题