- 浏览: 433006 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
陌路人丁:
SmallFish 写道同上,我也遇到了这个问题,目前还没解决 ...
Java类动态加载(一)——java源文件动态编译为class文件 -
陌路人丁:
冯程程 写道如果java源码中引用了第三方类后,动态编译会报软 ...
Java类动态加载(一)——java源文件动态编译为class文件 -
lvhejin:
Java设计模式源代码——自己看pdf写的 -
yunxi_2015:
不好用啊,查询失败
用Java解析手机号获取手机信息(归属地、Sim卡类型、移动或是联通、区号、邮编) -
zhouyicang:
我是拿来现成用的,非常感谢博主的代码,不过我给和我一样的人一个 ...
判断点与多边形的位置关系
首先介绍Oracle 9i新增加的一个系统自带的排序函数
1、按首字母排序
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
oracle9i中新增了按照拼音、部首、笔画排序功能
用法示例:
2、按首字母拼音查询
首先我们要创建一个可以查询汉字首字母的函数,函数代码如下:
随后,我们可以先取出姓名,然后截取第一个汉字,最后取汉字的首字母,即可用来作为查询条件
最后展示一个将两个结合起来运用的例子:
1、按首字母排序
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
oracle9i中新增了按照拼音、部首、笔画排序功能
用法示例:
拼音 SELECT * FROM TEAM ORDER BY NLSSORT(排序字段,'NLS_SORT = SCHINESE_PINYIN_M') 笔划 SELECT * FROM TEAM ORDER BY NLSSORT(排序字段,'NLS_SORT = SCHINESE_STROKE_M') 部首 SELECT * FROM TEAM ORDER BY NLSSORT(排序字段,'NLS_SORT = SCHINESE_RADICAL_M')
2、按首字母拼音查询
首先我们要创建一个可以查询汉字首字母的函数,函数代码如下:
CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); V_RETURN VARCHAR2(4000); FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M'); END; BEGIN FOR I IN 1..LENGTH(P_NAME) LOOP V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, I, 1)); 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; END LOOP; RETURN V_RETURN; END;
随后,我们可以先取出姓名,然后截取第一个汉字,最后取汉字的首字母,即可用来作为查询条件
select e.fullname,e.expert_id from expert e where f_trans_pinyin_capital(substr(e.fullname,1,1)) = 'z'
最后展示一个将两个结合起来运用的例子:
select e.expert_id,e.eperson_id,e.fullname, sum(b2i.browse_num) browsecount, count(o.object_id),wmsys.wm_concat(distinct d.name) from expert e left join expert2disciplinetype e2d on e2d.expert_id = e.expert_id left join disciplinetype d on d.discipline_type_id = e2d.discipline_type_id and d.upid = '0' left join community2expert c2e on c2e.expert_id = e.expert_id left join item i on i.item_type_id = 'AcademicRes' and i.withdrawn = 'N' join metadatavalue m on m.item_id = i.item_id and m.metadata_field_id = '64' join objectpublishinfo o on o.object_id = i.item_id and o.object_type = 'item' and o.viewobjecttype = 'eperson' and o.viewobjectid = e.eperson_id and o.state = '1' and o.publishstate_id = '3' left join browse2item b2i on b2i.item_id = o.object_id where e.state = '1' and f_trans_pinyin_capital(substr(e.fullname,1,1)) = 'z' group by e.expert_id,e.eperson_id,e.fullname order by nlssort(e.fullname,'NLS_SORT=SCHINESE_PINYIN_M')
发表评论
-
Oracle 10g数据库游标的使用学习三(实践)
2012-12-20 19:18 1053需求说明 S132877699668612为服务模板ID,每一 ... -
Oracle 10g数据库游标的使用学习二
2012-12-11 18:32 1081游标格式: CURSOR cursor_name[(param ... -
一条sql同时实现更新和插入
2011-05-04 16:44 2032用一条sql语句同时实现更新和插入 MERGE INTO ... -
Oracle常用分页语句性能比较
2011-05-04 15:31 1629分页一: select b.* from ( se ... -
Oracle性能调优——Oracle性能调优原则(一)
2011-04-01 09:40 1400Oracle性能调优原则 任何 ... -
Oracle学习——循环与控制语句
2011-03-10 10:14 1089一、if elsif else循环 --注意 elsif ... -
Oracle学习——块结构
2011-03-10 09:32 961PL/SQL程序可以划分为块的机构,每一个块都包含有PL/SQ ... -
Oracle层次关系查询
2011-02-14 10:00 1441原文链接:http://www.examd ... -
项目实战应用——根据父资源库分类属性修改子资源库分类的属性
2011-01-07 11:26 845整体要求: 1、先查询 ... -
Oracle 10g触发器学习一
2010-12-10 08:56 1975可能不是很多人知道 RAISE_APPLICATION_ERR ... -
Oracle 10g管理存储过程——查询数据库中的视图、存储过程、函数
2010-12-08 09:21 2718数据库字典视图user_objects用于显示当前用户包含的所 ... -
Oracle 10g创建函数——带输入、输出参数
2010-12-07 09:15 3569--Oracle10g 开发函数 --1、建立不带参数的函数 ... -
Oracle 10g存储过程学习二——为参数传递变量和数据
2010-12-01 09:12 1996--在创建存储过程时,为参数传递变量和数据 create ... -
Oracle 10g存储过程学习一
2010-11-30 08:58 2042--1、创建存储过程(无参数) create or rep ... -
Oracle 10g处理例外(即sql异常)学习二——自定义例外和非预定义例外
2010-11-27 14:25 1706--处理非预定义例外 --非预定义例外用于处理与预定义例外无关 ... -
Oracle 10g处理例外(即sql异常)学习一——预定义例外,即常见例外
2010-11-26 10:11 1689Oracle提供了预定义例外、非预定义例外和自定义例外等三种例 ... -
Oracle 10g使用游标更新或删除数据
2010-11-19 08:34 8928在定义又表示必须要带 ... -
Oracle 10g数据库游标的使用学习一
2010-11-17 09:22 1260--使用游标 1)9i以前的使用方法,一次取一条数据 --1、 ... -
Oracle 10g复合数据类型pl/sql集合学习六——索引表、嵌套表、变长数组
2010-11-12 09:19 1977--Oracle 10g复合数据类型pl/sql集合,集合又可 ... -
Oracle 10g数据库被锁记录的查询与解锁
2010-11-12 08:52 2598--1、查询出被锁的情况: SELECT OBJECT_ ...
相关推荐
oracle拼音首字母查询
Oracle查询取汉字拼音首字母Function
oracle获取汉字拼音拼音首字母的功能函数 oracle 获取汉字拼音
Oracle10g创建、修改、删除用户和用户表空间.
oracle10G和11G的OCI.dll,主要用于navicat工具;oracle10G和11G的OCI.dll,主要用于navicat工具
oracle,Oracle10g在Oracle10g上的安装与配置
Oracle10G数据库系统教程02-0003 10 Oracle10G数据库系统教程02-0003 10 Oracle10G数据库系统教程02-0006 10 Oracle10G数据库系统教程01-0002 11 Oracle10G数据库系统教程01-0003 11 Oracle10G数据库系统教程01-0004...
oracle获取汉字拼音首字母,用于根据首字母筛选汉字
oracle生成拼音、五笔首字母的functions方法,亲测有效!!!
oracle数据库驱动。包含了oracle oracle10g、11g、12c、19c的jar驱动包。解压密码是123456。
redhat5 下安装oracle10g redhat6下安装oracle11g 详细到装虚拟机,文件配置,安装详细过程
Oracle10g-linux安装包
Linux下Oracle 10g安装 有不少网友需要,学习在Linux上从头安装 Oracle 数据库 10g 的基础知识(仅用于评估)。
racle10gjdbc驱动是一款的数据库驱动软件。大家在使用racle10gjdbc程序之前需要在电脑端安装这个驱动,...驱动介绍racle10gjdbc驱动程序,运用在java连接oracle10g。oracle10gjdbc驱动包存放位置为E:\orac,欢迎下载体验
oracle 11g ,10g软件资源 百度云下载
ORACLE10G安装步骤ORACLE10G安装步骤ORACLE10G安装步骤
文件是本人oracle10g分区表自动按时间创建、删除分区的存储过程,测试代码,通过job调用存储过程,每天午夜12点运行一次。妥妥!跟大家分享下!
第1章 Oracle Database 10g体系结构 第2章 安装Oracle Database 10g和创建数据库 第3章 升级到Oracle Database 10g 第4章 规划Oracle应用程序——方法、风险和标准 第Ⅱ部分 SQL和SQL*Plus 第5章 SQL中的基本语法 第...
linux环境下oracle10g安装 1.连接putty 2.用root登录后建立用户和组 新增oinstall、dba用户组,oracle用户 [root@oracle10g /]# groupadd oinstall [root@oracle10g /]# groupadd dba [root@oracle10g /]# useradd ...