oracle 中文拼音取首字母,ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数...
当前位置:我的异常网» 数据库 » ORACLE依据中文拼音首字母排序、取得中文拼音首字母
ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数
www.myexceptions.net 网友分享于:2015-08-19 浏览:0次
ORACLE根据中文拼音首字母排序、取得中文拼音首字母函数
ORACLE根据中文拼音首字母排序、取得中文拼音首字母函数
根据中文拼音首字母排序、取得中文拼音首字母函数
介绍根据中文的首字母、笔画、部首排序函数【NLSSORT】:
1)、首字母
SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_PINYIN_M');
2)、笔画
SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_STROKE_M');
3)、部首
SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_RADICAL_M');
列表一行汉字
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 -www.2cto.com-
(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 -www.2cto.com-
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的开始的汉子分别是:“驁” “八”,依次类推可以找到其他的分界点,那么最后的函数就是如下:
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
返回首字母:wdf
来源:http://www.2cto.com/database/201203/125387.html
文章评论
oracle 中文拼音取首字母,ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数...相关推荐
- oracle 首位是字母,Oracle 10g如何对用户姓名,按首字母排序、查询
首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICAL_M 按 ...
- Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)
简介 这篇文章主要介绍了Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)以及相关的经验技巧,文章约21106字,浏览量320,点赞数5,值得参考! ...
- python 中文排序(按拼音首字母)
pypinyin 排序 仅按拼音首字母 排序 安装pypinyin pip3 install pypinyin 代码from pypinyin import lazy_pinyinchars = [' ...
- python读取oracle数据库中文乱码_PL/SQL连接Oracle数据库,中文乱码,显示问号
PL/SQL连接oracle数据库 1.简单介绍 在不安装oracle数据库的情况下使用pl/sql连接远程oracle数据库. 2.详细步骤: a) 安装PL/SQL.依据自己的操作系统安 ...
- plsql创建中文表头_不安装oracle连接plsql,Oracle instantclient安装详解
一般进公司第一天都会要求搭建开发环境,很多公司使用oralce 数据库,一般都选择plsql进行连接,这时候需要一些配置,如果在第一天在搭建环境出现连不上这个问题一定不会给领导留下好印象!所以不知道怎 ...
- oracle 时间按季度,ORACLE时间字段取年、月、日、季度
ORACLE时间字段取年.月.日.季度 --得到年月,日,季度 select to_char(日期,'yyyymmdd') DATE_ID,to_char(日期,'yyyy')||'年'||to_ ...
- 解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例)
解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例) 参考文章: (1)解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例) (2)https: ...
- oracle 12c omf,从参数取值瞅Oracle OMF特性
当前位置:我的异常网» 数据库 » 从参数取值瞅Oracle OMF特性 从参数取值瞅Oracle OMF特性 www.myexceptions.net 网友分享于:2014-05-17 浏览:1 ...
- oracle中的取余函数
原文地址:oracle中的取余函数作者:人生笑笑 oracle中取余是用函数mod(numer1,number2),相当于C语言中的 "Number1%Number2" 语句,返回 ...
最新文章
- 提高 Github 下载速度的方法「100% 有效」可达到 2MB/s
- python在日常工作处理中的应用-近期工作中应用Python的一些经验总结
- Apache 与 Nginx
- 使用thymeleaf中超链接失效
- 让人迷茫的三十岁,从专业技能、行业知识和软实力的人才三角谈起
- java图片裁剪并保存_java裁剪图片并保存的示例分享
- 潜流式湿地计算_人工湿地计算书
- 使用RabbitMQ实现延迟任务
- [CMake] message 打印变量值
- 持续集成:什么应该自动化?
- base64编码格式
- idea 2020 社区版传递参数
- 基于鱼群算法的函数寻优算法
- python基础教程虎课-想配一台PS修图的电脑,请大家推荐配置? | ps修图基础
- 2021年最牛福利!阿里巴巴社招面试真题惨遭外泄,现在全部分享给大家!
- 基于WIFI信号的呼吸和心率检测(论文总结)
- 局部刷新的两种实现方式
- android listview仿iphone通讯录ios 3dTouch
- stm32怎么加载字库_如何用STM32的片内Flash存储中文字库
- UDA1341声卡驱动