標籤:
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
也可以對組合結果排序,如對某兩行的乘積排序
- SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp
- 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 中查詢結果的排序