oracle 数据库字段按照拼音首字母排序
1、创建oracle存储过程(网上拿来的的)
- 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;
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";
- }
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>
<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的数据