使用ORACLE函数,可以实现许多我们需要的功能,下面就教您如何使用ORACLE函数实现按汉字拼音首字母查询,如果您对ORACLE函数使用方面感兴趣的话,不妨一看。

列表一行汉字

WITH A AS

(SELECT '获取汉字拼音首字母' W FROM DUAL)

SELECT SUBSTR(W, ROWNUM, 1) FROM A

CONNECT BY ROWNUM <= (SELECT LENGTH(W) FROM A);

返回结果

用汉字字符集对这个列表进行排序

WITH A AS

(SELECT '获取汉字拼音首字母' W FROM DUAL)

SELECT SUBSTR(W, ROWNUM, 1) FROM A

CONNECT BY ROWNUM <= (SELECT LENGTH(W) FROM A)

ORDER BY NLSSORT(SUBSTR(W, ROWNUM, 1), 'NLS_SORT=SCHINESE_PINYIN_M');

返回结果

那么根据这个原理,上面输入一个拼音A打头的字"澳",后面输入一个B大头的字"吧",找到每个音节的起止的汉字是哪个

WITH A AS

(

SELECT ROWNUM RN, CHR(ROWNUM) C FROM DUAL CONNECT BY LEVEL <= 65535

)

SELECT * FROM A WHERE LENGTHB(C) = 2

AND RN > 32768

AND NLSSORT(C, 'NLS_SORT=SCHINESE_PINYIN_M') > NLSSORT('澳', 'NLS_SORT=SCHINESE_PINYIN_M')

AND NLSSORT(C, 'NLS_SORT=SCHINESE_PINYIN_M') < NLSSORT('吧', 'NLS_SORT=SCHINESE_PINYIN_M')

ORDER BY NLSSORT(C, 'NLS_SORT=SCHINESE_PINYIN_M');

根据返回的结果,就能看到,A的结束和B的开始的汉子分别是:“驁” “八”,依次类推可以找到其他的分界点,那么最后的ORACLE函数就是如下:

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 F_TRANS_PINYIN_CAPITAL('罗华') FROM DUAL

返回 lh

使用的时候这样查询:

select name from users t1 where (t1.name = ? or F_TRANS_PINYIN_CAPITAL(t1.name) = ?)

如果里面的?参数传递的是“罗华”,就是查询用户名是落花的人,如果传递的是lh的话,查询的就是拼音是lh的人

oracle函数返回表的实现

带您了解Oracle FBI索引

详解如何将Oracle安装为Linux服务

详解Oracle多种表连接方式

DB2常用函数和Oracle的比较

http://www.dengb.com/oracle/584248.htmlwww.dengb.comtruehttp://www.dengb.com/oracle/584248.htmlTechArticle使用ORACLE函数,可以实现许多我们需要的功能,下面就教您如何使用ORACLE函数实现按汉字拼音首字母查询,如果您对ORACLE函数使用方面感兴...

oracle 拼音首字母查询,使用ORACLE函数实现按汉字拼音首字母查询相关推荐

  1. php 获得汉字拼音首字母的函数,php 获得汉字拼音首字母的函数

    php获取汉字拼音的第一个字母 function getinitial($str) { $asc=ord(substr($str,0,1)); if ($asc<160) //非中文 { if ...

  2. Collections.sort实现倒序汉字拼音排序,默认是按照正序进行汉字拼音排序MYSQL语句支持汉字排序SQL汉字排序

    前言: 需求上遇到过,业务希望一些下拉框,按照汉字拼音的顺序来进行展示,需要对下拉框的List进行排序. 特别注意: Collections.reverse()方法是将数据倒置,并非倒序直接排序. 倒 ...

  3. 多表关联查询_【函数007】 EXCEL多表关联查询实战

    继续函数实战系列教程,今天要分享的案例是根据填写的表名自动提取对应表中的数据数据准备:需求说明:我们希望实现,我们选择不同月份,显示对应月份表中的数据!处理方案:1.构建下拉列表(菜单)数据-数据有效 ...

  4. php 获取首字母,PHP_php 获得汉字拼音首字母的函数,php获取汉字拼音的第一个字母 - phpStudy...

    php 获得汉字拼音首字母的函数 php获取汉字拼音的第一个字母 复制代码 代码如下: function getinitial($str) { $asc=ord(substr($str,0,1)); ...

  5. VBA获取汉字拼音首字母的函数

    汉字转拼单首字母 现在各种查询中,一般都支持拼音首字母查询,下面的函数可以获得汉字的首字母. Public Function PY(myStr) Dim Str$, L$, Temp$, 特殊字$ S ...

  6. 【C#】获取汉字拼音首字母和全拼

    文章目录 利用CJK统一表意符号获取首字母 获取首字母和全拼 另附sql server解决方案 来源 java的同学可以了解下pinyin4j,js可以了解ChinesePY.js 获取拼音的意义多在 ...

  7. php 汉字拼音首字母,PHP获得中文汉字拼音首字母例子

    获取给出汉字中拼音的第一个汉字字母我们可以利用汉字的一个编码来进行判断,下面我们来给大家介绍一个例子,非常的简单好用. 先来看看怎样取得单个汉字的拼音首字母,请看下面这个函数,它支持GBK和UTF8编 ...

  8. java 使用sourceforge.pinyin4j查询汉字拼音

    在我们的系统中,可能经常需要按首字母排序一些信息(比如淘宝商城的品牌列表字母序排列),那么我们就需要一个能够根据汉字查询对应的拼音,取出拼音的首字母即可. 我们使用sourceforge.pinyin ...

  9. Sql分页查询以及top函数简单实例

    Sql分页查询以及top函数简单实例 Sql分页查询以及top函数简单实例 我们做项目时查询表格存在几百上千条数据时经常会需要用到分页,下面就给大家介绍一下在sql中查询分页的简单实例吧.首先我们要知 ...

  10. oracle生成首字母,ORACLE获取汉字拼音首字母的函数

    CREATE OR REPLACE FUNCTION PUB_GET_PY(p_汉字 CHAR DEFAULT '%') RETURN CHAR IS /*********************** ...

最新文章

  1. 验证STIL的pattern的输入输出顺序
  2. Hibernate映射关系之一对多
  3. HiveQL: 数据定义
  4. 虚拟搭建局域网模拟器_巧用虚拟局域网,快速搭建私有云,一步就能搞定
  5. 03_Influxdb数据库的简单操作
  6. 凡诚工业机器人_【优傲】协作机器人组装案例集锦
  7. web xml配置oracle数据源_SpringBoot2 整合JTA组件,多数据源事务管理
  8. EmEditor Professional v14/15/16/17/18 最新版 注册码 2000组(终身授权)
  9. js怎么获取ueditor值_js获取UEditor富文本编辑器中的图片地址
  10. Cisco CCNP 帧中继网络教程
  11. goland 方法注释_Golang 注释
  12. 【软件需求工程与建模】13组组队项目小组分工及当前完成的工作
  13. pyecharts1.7.1实现地图可视化(空间数据可视化)
  14. 提升成都文化产业竞争力的钻石体系
  15. Glyph 26426 missing from current font. matplotlib显示中文乱码解决
  16. EXCEL如何从地址中提取省、市、区
  17. C程序设计语言读书笔记:入门C语言
  18. 个人开发经历--我的java学习之路(学校篇)
  19. fortran:计算第一类椭圆积分
  20. JavaScript的精华与糟粕

热门文章

  1. H-Chat: socket.io实现私聊,群聊,添加好友
  2. 常见蛋白质种类_蛋白粉有哪些种类?都有什么作用?常见的6种蛋白粉
  3. 黑盒测试——因果图法
  4. (八) 爬虫教程 |Scrapy框架的使用
  5. PYTHON 用几何布朗运动模型和蒙特卡罗MONTE CARLO随机过程模拟股票价格可视化分析耐克NKE股价时间序列数据...
  6. 模拟美式橄榄球比赛数据(R)
  7. 局域网oracle 速度慢,[转帖]局域网中其他用户感觉上网速度慢、网速卡
  8. 幽灵蛛(pholcus)规则(二)
  9. android前端开发
  10. 基于Arduino的吉他调音器