浏览 3624 次
锁定老帖子 主题:oracle 数据库字段按照拼音首字母排序
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-07-09
CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL_H(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); V_RETURN VARCHAR2(4000); tmp integer; FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M'); END; BEGIN V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, 1, 1)); select length(SUBSTR(P_NAME, 1, 1)) - lengthb(SUBSTR(P_NAME, 1, 1)) into tmp from dual; IF tmp=0 then V_RETURN := SUBSTR(P_NAME, 1, 1); RETURN V_RETURN; END IF; IF V_COMPARE >= F_NLSSORT(' 吖 ') AND V_COMPARE <= F_NLSSORT('驁 ') THEN V_RETURN := V_RETURN || 'A'; ELSIF V_COMPARE >= F_NLSSORT('八 ') AND V_COMPARE <= F_NLSSORT('簿 ') THEN V_RETURN := V_RETURN || 'B'; ELSIF V_COMPARE >= F_NLSSORT('嚓 ') AND V_COMPARE <= F_NLSSORT('錯 ') THEN V_RETURN := V_RETURN || 'C'; ELSIF V_COMPARE >= F_NLSSORT('咑 ') AND V_COMPARE <= F_NLSSORT('鵽 ') THEN V_RETURN := V_RETURN || 'D'; ELSIF V_COMPARE >= F_NLSSORT('妸 ') AND V_COMPARE <= F_NLSSORT('樲 ') THEN V_RETURN := V_RETURN || 'E'; ELSIF V_COMPARE >= F_NLSSORT('发 ') AND V_COMPARE <= F_NLSSORT('猤 ') THEN V_RETURN := V_RETURN || 'F'; ELSIF V_COMPARE >= F_NLSSORT('旮 ') AND V_COMPARE <= F_NLSSORT('腂 ') THEN V_RETURN := V_RETURN || 'G'; ELSIF V_COMPARE >= F_NLSSORT('妎 ') AND V_COMPARE <= F_NLSSORT('夻 ') THEN V_RETURN := V_RETURN || 'H'; ELSIF V_COMPARE >= F_NLSSORT('丌 ') AND V_COMPARE <= F_NLSSORT('攈 ') THEN V_RETURN := V_RETURN || 'J'; ELSIF V_COMPARE >= F_NLSSORT('咔 ') AND V_COMPARE <= F_NLSSORT('穒 ') THEN V_RETURN := V_RETURN || 'K'; ELSIF V_COMPARE >= F_NLSSORT('垃 ') AND V_COMPARE <= F_NLSSORT('擽 ') THEN V_RETURN := V_RETURN || 'L'; ELSIF V_COMPARE >= F_NLSSORT('嘸 ') AND V_COMPARE <= F_NLSSORT('椧 ') THEN V_RETURN := V_RETURN || 'M'; ELSIF V_COMPARE >= F_NLSSORT('拏 ') AND V_COMPARE <= F_NLSSORT('瘧 ') THEN V_RETURN := V_RETURN || 'N'; ELSIF V_COMPARE >= F_NLSSORT('筽 ') AND V_COMPARE <= F_NLSSORT('漚 ') THEN V_RETURN := V_RETURN || 'O'; ELSIF V_COMPARE >= F_NLSSORT('妑 ') AND V_COMPARE <= F_NLSSORT('曝 ') THEN V_RETURN := V_RETURN || 'P'; ELSIF V_COMPARE >= F_NLSSORT('七 ') AND V_COMPARE <= F_NLSSORT('裠 ') THEN V_RETURN := V_RETURN || 'Q'; ELSIF V_COMPARE >= F_NLSSORT('亽 ') AND V_COMPARE <= F_NLSSORT('鶸 ') THEN V_RETURN := V_RETURN || 'R'; ELSIF V_COMPARE >= F_NLSSORT('仨 ') AND V_COMPARE <= F_NLSSORT('蜶 ') THEN V_RETURN := V_RETURN || 'S'; ELSIF V_COMPARE >= F_NLSSORT('侤 ') AND V_COMPARE <= F_NLSSORT('籜 ') THEN V_RETURN := V_RETURN || 'T'; ELSIF V_COMPARE >= F_NLSSORT('屲 ') AND V_COMPARE <= F_NLSSORT('鶩 ') THEN V_RETURN := V_RETURN || 'W'; ELSIF V_COMPARE >= F_NLSSORT('夕 ') AND V_COMPARE <= F_NLSSORT('鑂 ') THEN V_RETURN := V_RETURN || 'X'; ELSIF V_COMPARE >= F_NLSSORT('丫 ') AND V_COMPARE <= F_NLSSORT('韻 ') THEN V_RETURN := V_RETURN || 'Y'; ELSIF V_COMPARE >= F_NLSSORT('帀 ') AND V_COMPARE <= F_NLSSORT('咗 ') THEN V_RETURN := V_RETURN || 'Z'; END IF; RETURN V_RETURN; END; 2、struts2 action 代码 在action里面写sql为了贪快。别在意。 private String[] pyList=null; //拼音数组 private String pyStr =null; //查询拼音字母 public String execute(){ /*岗位类别按拼音首字母查询*/ String pyzm="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"; pyList=pyzm.split(" "); String jobtypeSql ="select jobtypename,jobtypecode from stjobtype where rownum <=100 order by hots desc"; String areaSql = "select * from starea start with areacode='4406' connect by parentcode = prior areacode"; try { if (!CommonUtil.isNullOrEmpty(pyStr)) { //1、调用f_trans_pinyin_capital_h oracle函数查询 jobtypeSql="select jobtypename,jobtypecode" + " from stjobtype where f_trans_pinyin_capital_h(jobtypename)= '"+pyStr+"' order by hots desc"; } jobtypeList=stjobtypeService.getStjobtypeListBySQL(jobtypeSql); stareaList=stareaService.getStareaListBySQL(areaSql); String condition ="state = '0'"; } catch (DBException e) { e.printStackTrace(); return "fail"; } return "success"; } 3、jsp里面代码 <table class="table_border" cellpadding="1" cellspacing="0"> <tr> <td colspan="5" align="left"> <img src="<%=basePath%>/images/moveright.gif" align="middle"> <b style="padding-left: 8px; padding-top: 10px;">岗位类别查询</b> </td> </tr> <tr> <td colspan="5" align="left"> <a href="jobsearch.action"> <b style="color:blue">热门岗位类别</b> </a> /<b style="padding-left: 8px; padding-top: 10px;">岗位类别首字母查询</b> <s:iterator value="pyList" status="st"> <a href="jobsearch.action?pyStr=<s:property value="pyList[#st.index]" />"> <b style="color:blue"><s:property value="pyList[#st.index]" /></b> </a> | </s:iterator> </td> </tr> <s:iterator id="jobtype" value="#request.jobtypeList" status="st"> <s:if test="#st.index==0 || #st.index%5 ==0"> <tr> </s:if> <td> <a href="etjob!findEtjobList.action?jobtypecode=<s:property value='#jobtype.jobtypecode'/>"> <s:property value="#jobtype.jobtypename" /> </a> </td> <s:if test="#st.index==4 || #st.index%5 ==4"> </tr> </s:if> </s:iterator> </table> 4、附两效果图: 页面1:查询页面 页面2:查询首拼为字母G的数据 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |