`

oracle 数据库字段按照拼音首字母排序

 
阅读更多

1、创建oracle存储过程(网上拿来的的)

Sql代码 复制代码 收藏代码
  1. CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL_H(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS  
  2. V_COMPARE VARCHAR2(100);   
  3. V_RETURN VARCHAR2(4000);   
  4. tmp  integer;   
  5. FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS  
  6. BEGIN  
  7. RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M');   
  8. END;   
  9. BEGIN  
  10. V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, 1, 1));   
  11.   
  12. select length(SUBSTR(P_NAME, 1, 1)) - lengthb(SUBSTR(P_NAME, 1, 1)) into tmp from dual;   
  13.   
  14. IF tmp=0 then  
  15. V_RETURN :=   SUBSTR(P_NAME, 1, 1);   
  16. RETURN V_RETURN;   
  17. END IF;   
  18.   
  19. IF V_COMPARE >= F_NLSSORT(' 吖 'AND V_COMPARE <= F_NLSSORT('驁 'THEN  
  20. V_RETURN := V_RETURN || 'A';   
  21. ELSIF V_COMPARE >= F_NLSSORT('八 'AND V_COMPARE <= F_NLSSORT('簿 'THEN  
  22. V_RETURN := V_RETURN || 'B';   
  23. ELSIF V_COMPARE >= F_NLSSORT('嚓 'AND V_COMPARE <= F_NLSSORT('錯 'THEN  
  24. V_RETURN := V_RETURN || 'C';   
  25. ELSIF V_COMPARE >= F_NLSSORT('咑 'AND V_COMPARE <= F_NLSSORT('鵽 'THEN  
  26. V_RETURN := V_RETURN || 'D';   
  27. ELSIF V_COMPARE >= F_NLSSORT('妸 'AND V_COMPARE <= F_NLSSORT('樲 'THEN  
  28. V_RETURN := V_RETURN || 'E';   
  29. ELSIF V_COMPARE >= F_NLSSORT('发 'AND V_COMPARE <= F_NLSSORT('猤 'THEN  
  30. V_RETURN := V_RETURN || 'F';   
  31. ELSIF V_COMPARE >= F_NLSSORT('旮 'AND V_COMPARE <= F_NLSSORT('腂 'THEN  
  32. V_RETURN := V_RETURN || 'G';   
  33. ELSIF V_COMPARE >= F_NLSSORT('妎 'AND V_COMPARE <= F_NLSSORT('夻 'THEN  
  34. V_RETURN := V_RETURN || 'H';   
  35. ELSIF V_COMPARE >= F_NLSSORT('丌 'AND V_COMPARE <= F_NLSSORT('攈 'THEN  
  36. V_RETURN := V_RETURN || 'J';   
  37. ELSIF V_COMPARE >= F_NLSSORT('咔 'AND V_COMPARE <= F_NLSSORT('穒 'THEN  
  38. V_RETURN := V_RETURN || 'K';   
  39. ELSIF V_COMPARE >= F_NLSSORT('垃 'AND V_COMPARE <= F_NLSSORT('擽 'THEN  
  40. V_RETURN := V_RETURN || 'L';   
  41. ELSIF V_COMPARE >= F_NLSSORT('嘸 'AND V_COMPARE <= F_NLSSORT('椧 'THEN  
  42. V_RETURN := V_RETURN || 'M';   
  43. ELSIF V_COMPARE >= F_NLSSORT('拏 'AND V_COMPARE <= F_NLSSORT('瘧 'THEN  
  44. V_RETURN := V_RETURN || 'N';   
  45. ELSIF V_COMPARE >= F_NLSSORT('筽 'AND V_COMPARE <= F_NLSSORT('漚 'THEN  
  46. V_RETURN := V_RETURN || 'O';   
  47. ELSIF V_COMPARE >= F_NLSSORT('妑 'AND V_COMPARE <= F_NLSSORT('曝 'THEN  
  48. V_RETURN := V_RETURN || 'P';   
  49. ELSIF V_COMPARE >= F_NLSSORT('七 'AND V_COMPARE <= F_NLSSORT('裠 'THEN  
  50. V_RETURN := V_RETURN || 'Q';   
  51. ELSIF V_COMPARE >= F_NLSSORT('亽 'AND V_COMPARE <= F_NLSSORT('鶸 'THEN  
  52. V_RETURN := V_RETURN || 'R';   
  53. ELSIF V_COMPARE >= F_NLSSORT('仨 'AND V_COMPARE <= F_NLSSORT('蜶 'THEN  
  54. V_RETURN := V_RETURN || 'S';   
  55. ELSIF V_COMPARE >= F_NLSSORT('侤 'AND V_COMPARE <= F_NLSSORT('籜 'THEN  
  56. V_RETURN := V_RETURN || 'T';   
  57. ELSIF V_COMPARE >= F_NLSSORT('屲 'AND V_COMPARE <= F_NLSSORT('鶩 'THEN  
  58. V_RETURN := V_RETURN || 'W';   
  59. ELSIF V_COMPARE >= F_NLSSORT('夕 'AND V_COMPARE <= F_NLSSORT('鑂 'THEN  
  60. V_RETURN := V_RETURN || 'X';   
  61. ELSIF V_COMPARE >= F_NLSSORT('丫 'AND V_COMPARE <= F_NLSSORT('韻 'THEN  
  62. V_RETURN := V_RETURN || 'Y';   
  63. ELSIF V_COMPARE >= F_NLSSORT('帀 'AND V_COMPARE <= F_NLSSORT('咗 'THEN  
  64. V_RETURN := V_RETURN || 'Z';   
  65. END IF;   
  66.   
  67.   
  68.   
  69. RETURN V_RETURN;   
  70.   
  71.   
  72.   
  73. 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为了贪快。别在意。

Java代码 复制代码 收藏代码
  1. private String[] pyList=null;               //拼音数组   
  2. private String  pyStr =null;  //查询拼音字母   
  3.   
  4. public String execute(){    
  5.         /*岗位类别按拼音首字母查询*/  
  6. 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";    
  7. pyList=pyzm.split(" ");   
  8. String jobtypeSql ="select jobtypename,jobtypecode from stjobtype where rownum <=100 order by hots desc";   
  9.         String areaSql = "select * from starea start with areacode='4406' connect by parentcode =   prior areacode";           
  10.         try {    
  11.             if (!CommonUtil.isNullOrEmpty(pyStr)) {   
  12.                 //1、调用f_trans_pinyin_capital_h oracle函数查询   
  13.                  jobtypeSql="select jobtypename,jobtypecode" +   
  14.                         " from stjobtype where f_trans_pinyin_capital_h(jobtypename)= '"+pyStr+"' order by hots desc";             
  15.        
  16.             }   
  17.             jobtypeList=stjobtypeService.getStjobtypeListBySQL(jobtypeSql);   
  18.             stareaList=stareaService.getStareaListBySQL(areaSql);    
  19.             String condition ="state = '0'";   
  20.   
  21.         } catch (DBException e) {    
  22.             e.printStackTrace();   
  23.             return "fail";   
  24.         }   
  25.            
  26.         return "success";   
  27.     }  
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里面代码

Html代码 复制代码 收藏代码
  1.   
  2. <table class="table_border" cellpadding="1" cellspacing="0">  
  3.                 <tr>  
  4.                     <td colspan="5" align="left">  
  5.                         <img src="<%=basePath%>/images/moveright.gif" align="middle">  
  6.                         <b style="padding-left: 8px; padding-top: 10px;">岗位类别查询</b>  
  7.                     </td>  
  8.                 </tr>  
  9.                 <tr>  
  10.                     <td colspan="5" align="left">    
  11.                     <a href="jobsearch.action">  
  12.                             <b style="color:blue">热门岗位类别</b>  
  13.                             </a>  
  14.                         /<b style="padding-left: 8px; padding-top: 10px;">岗位类别首字母查询</b>  
  15.                         <s:iterator value="pyList" status="st">  
  16.                             <a href="jobsearch.action?pyStr=<s:property value="pyList[#st.index]" />">  
  17.                             <b style="color:blue"><s:property value="pyList[#st.index]" /></b>  
  18.                             </a> |   
  19.                         </s:iterator>                        
  20.                     </td>  
  21.                 </tr>  
  22.                     
  23.                 <s:iterator id="jobtype" value="#request.jobtypeList" status="st">  
  24.                     <s:if test="#st.index==0 || #st.index%5 ==0">  
  25.                         <tr>  
  26.                     </s:if>  
  27.                     <td>  
  28.                         <a  
  29.                             href="etjob!findEtjobList.action?jobtypecode=<s:property value='#jobtype.jobtypecode'/>">  
  30.                             <s:property value="#jobtype.jobtypename" /> </a>  
  31.                     </td>  
  32.                     <s:if test="#st.index==4 || #st.index%5 ==4">  
  33.                         </tr>  
  34.                     </s:if>  
  35.                 </s:iterator>  
  36.             </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的数据

  • 大小: 48.5 KB
  • 大小: 19.9 KB
分享到:
评论

相关推荐

    sql 按拼音首字母排序

    标题“SQL按拼音首字母排序”以及描述中的关键词“SQL按拼音排序”,指向了一种特殊的数据排序需求:在数据库中,针对包含中文字符的字段,按照中文拼音的首字母进行排序。这在处理大量含有中文名称、地点等信息的...

    oracle提取汉字拼音和首字母

    在Oracle数据库环境中,有时我们需要对汉字进行处理,例如获取汉字的拼音或首字母,这在中文数据检索、排序或建立索引时非常有用。本文将详细介绍如何使用PL/SQL存储过程来实现这一功能。 首先,我们需要理解Oracle...

    获取拼音首码和五笔首码

    在数据库设计时,可以创建一个特殊的数据表,包含汉字、拼音首码、五笔首码等字段。当用户输入拼音或五笔首码时,数据库系统可以通过索引快速匹配相应的汉字记录。这需要数据库具备高效的全文搜索或者模糊匹配能力,...

    ORACLE汉字转拼音

    在Oracle数据库环境中,有时我们需要对汉字字段进行处理,例如转换为拼音,以便于搜索、排序或者与其他系统集成。"ORACLE汉字转拼音"这个主题就聚焦于如何在Oracle数据库中实现这一功能。以下是对这个知识点的详细...

    Oracle 中文字段进行排序的sql语句

    在Oracle数据库中,对包含中文字符的字段进行排序是一项常见的操作。这有助于用户根据特定的规则(如笔画、部首或拼音)查看和管理数据。以下是对标题和描述中提及的三种排序方式的详细解释: 1)按笔画排序: 在...

    oracl几个函数

    这个函数通过遍历输入的字符串,逐个字符地调用`NLSSORT`函数并根据返回的拼音范围,将对应的拼音首字母添加到结果字符串中。 ### 总结 通过上述知识点,我们了解了Oracle中如何进行数据库登录、如何使用`NLSSORT`...

    mysql省市区表完整版文件

    在数据库中,拼音字段可以帮助进行基于拼音的搜索,比如拼音排序或模糊搜索。 5. **经纬度**:经度和纬度是地理坐标系统的一部分,用于确定地球表面的精确位置。在数据库中,这些信息可以用于地图定位、距离计算等...

    ORACLE常用函数总结

    Oracle数据库系统中包含众多函数,这些函数用于处理各种数据类型,包括字符串、数值以及日期等。本篇将重点介绍在SQL查询和PL/SQL编程中常用的Oracle字符函数,它们可以帮助我们进行数据的处理和分析。 1. ASCII(n)...

    oracle函数大全

    - **功能**:根据指定的排序规则将字符串中每个单词的首字母转换为大写,其余字母转换为小写。 - **语法**:`NLS_INITCAP(ch, nlspara)` - **参数**:ch为待处理字符串;nlspara为排序规则,默认采用系统设置。 - **...

    020年最新省市区sql文件

    此外,"first_letter"字段可能会存在,用于存储每个地区的首字母,这在实现首字母快速检索或拼音排序时非常有用。 在实际应用中,这样的数据库文件可以极大地简化开发流程,因为开发者无需手动输入或搜集这些数据。...

    风越ASP代码生成器FireAspCreatorv2.9.rar

    根据数据库字段允许空值状态自动设置输入检测代码 页面皮肤模板设置,根据网页模板快速生成页面 ★ 设置指定字段在编辑信息时为只读状态 字段需要二次输入(如输入两次密码,以验证其正确性) ★ 在列表中直接批量...

    2018整理全国行政区域代码 4290行 单表 两种格式

    在这个案例中,SQL格式的行政区域代码可能是一个表,包含与Excel文件相同的字段,可以被导入到数据库系统中,如MySQL、Oracle或SQL Server,以便进行数据整合、分析或者开发基于地理位置的应用。 这些数据在多个...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    根据数据库字段允许空值状态自动设置输入检测代码 页面皮肤模板设置,根据网页模板快速生成页面 ★ 设置指定字段在编辑信息时为只读状态 字段需要二次输入(如输入两次密码,以验证其正确性) ★ 在列表中直接...

    风越.net代码生成器v2.9

    根据数据库字段允许空值状态自动设置输入检测代码 页面皮肤模板设置,根据网页模板快速生成页面 ★ 设置指定字段在编辑信息时为只读状态 字段需要二次输入(如输入两次密码,以验证其正确性) ★ 在列表中直接...

    风越ASP代码生成器2.8

    根据数据库字段允许空值状态自动设置输入检测代码 页面皮肤模板设置,根据网页模板快速生成页面 ★ 设置指定字段在编辑信息时为只读状态 字段需要二次输入(如输入两次密码,以验证其正确性) ★ 在列表中直接...

    C#基类库(苏飞版)

    取汉字拼音的首字母,只要你输入一个汉字,或者是多个汉字就会取出相应的道字母,主要是方便查询使用的 复制代码 16.配置文件操作类 ConfigHelper 1.根据Key取Value值 2.根据Key修改Value 3.添加新的Key ,Value...

Global site tag (gtag.js) - Google Analytics