oracle获取中文拼音/WB

news/2024/10/30 19:31:44/

oracle_0">1.oracle获取中文拼音首字母

oracle">CREATE OR REPLACE FUNCTION      FUNC_GET_PY(z varchar2)
RETURN varchar2
ISpy varchar2(20);  --与源字符对应的拼音码curr_no integer;  --当前字符序号maxlen  integer;  --z(源字符串)的最大长度l_schar varchar2(100);   --截取后的源字符串py_char char(1);  --当前字符的拼音码l_vzchar varchar2(2);  --当前字符py_flag smallint;  --当前字符是否存在拼音码的标志curr_len integer;       --当前拼音码长度
BEGIN--初始化参数curr_no:=1;py:='';py_char:='';l_vzchar:='';py_flag:=0;l_schar:=trim(z);maxlen:=length(l_schar);if maxlen = 0 thenreturn '';end if;curr_len := 0;--拼音码的最大长度为20且不超过字符的最大长度
<<L>>  while curr_no <= maxlen and curr_len < 20 loop--l_vzchar:=substr(z,curr_no,1);select substr(l_schar,curr_no,1) into l_vzchar from dual;select count(py) into py_flag from trans_twzk where z = l_vzchar;if py_flag = 1 thenselect py into py_char from trans_twzk where z = l_vzchar;--py_char:=nvl(py_char,' ');else--'%-+~.'用其本身代替if l_vzchar = '%' or l_vzchar = '-' or l_vzchar = '+' or l_vzchar = '~' or l_vzchar = '.' thenpy_char:=l_vzchar;--'()()[]'和' '则跳过elsif l_vzchar = '(' or l_vzchar = ')' or l_vzchar = '(' or l_vzchar = ')' or l_vzchar = '[' or l_vzchar = ']' or l_vzchar=' ' or l_vzchar='[' or l_vzchar=']' thenselect  substr(l_schar,1,curr_no-1) || substr(l_schar,curr_no+1,length(l_schar)) into l_schar from dual;  --跳过当前字符串maxlen:=maxlen-1;  --跳过则源字符长度减1goto l;--其他的未找到的字符(如汉字)则用'z'来代替elsepy_char:='z';end if;end if;curr_no:=curr_no+1;py:=py || py_char;curr_len := length(py);end loop;return trim(py);
END;

2.获取WB

oracle">CREATE OR REPLACE FUNCTION      FUNC_GET_WB(z varchar2)
RETURN varchar2
ISwb varchar2(20);curr_no integer;  --当前字符串序号maxlen  integer;  --z的最大长度l_schar varchar2(500);wb_char char(1);  --当前字符的拼音码l_vzchar varchar2(2);  --当前字符wb_flag smallint;
BEGIN--初始化参数--maxlen:=length(z);l_schar:=trim(z);maxlen:=length(l_schar);curr_no:=1;wb:='';wb_char:='';l_vzchar:='';wb_flag:=0;if maxlen = 0 thenreturn '';end if;--拼音码的最大长度为6且不超过字符的最大长度
<<L>>  while curr_no < 20 and curr_no <= maxlen loop--l_vzchar:=substr(z,curr_no,1);select substr(l_schar,curr_no,1) into l_vzchar from dual;--判断是否有对应的五笔码select count(wb) into wb_flag from trans_twzk where z = l_vzchar;if wb_flag = 1 thenselect wb into wb_char from trans_twzk where z = l_vzchar;--wb_char:=nvl(wb_char,' ');--没有对应的五笔码的处理else--'%-+~.'字符用其本身代替if l_vzchar = '%' or l_vzchar = '-' or l_vzchar = '+' or l_vzchar = '~' or l_vzchar = '.' thenwb_char:=l_vzchar;--'()()[]'和' '则跳过elsif l_vzchar = '(' or l_vzchar = ')' or l_vzchar = '(' or l_vzchar = ')' or l_vzchar = '[' or l_vzchar = ']' or l_vzchar=' ' thenselect  substr(l_schar,1,curr_no-1) || substr(l_schar,curr_no+1,length(l_schar)) into l_schar from dual;maxlen:=maxlen-1;goto l;--其他的未找到的字符(如汉字)则用'z'来代替elsewb_char:='z';end if;end if;curr_no:=curr_no+1;wb:=wb || wb_char;end loop;return wb;
END;

3.获取年龄

CREATE OR REPLACE function      fun_age(age in varchar2) return number isFunctionResult number;f_age varchar2(10);h_age varchar2(10);
beginif age is null or trim(age) = '' thenFunctionResult := '';elseselect to_number(substr(age,0,length(age)-1)) into f_age from dual;select substr(age,-1) into h_age from dual;if h_age = 'Y' thenFunctionResult := f_age;elseFunctionResult :=0;end if;end if;return FunctionResult;exceptionwhen others thenreturn 0;
end fun_age;

#4.

CREATE OR REPLACE function      fun_age_md(age in varchar2) return varchar2 isFunctionResult varchar2(2);f_age varchar2(10);h_age varchar2(10);
beginif age is null or trim(age) = '' thenFunctionResult := '';elseselect to_number(substr(age,0,length(age)-1)) into f_age from dual;select substr(age,-1) into h_age from dual;if h_age = 'M' thenFunctionResult := f_age;else if h_age = 'D' thenFunctionResult := f_age;end if ;end if;end if;return FunctionResult;exceptionwhen others thenreturn 0;
end fun_age_md;

http://www.ppmy.cn/news/1543170.html

相关文章

Github优质项目推荐(第八期)

文章目录 Github优质项目推荐 - 第八期一、【manim】&#xff0c;66.5k stars - 创建数学动画的 Python 框架二、【siyuan】&#xff0c;19.5k stars - 个人知识管理软件三、 【GetQzonehistory】&#xff0c;1.3k stars - 获取QQ空间发布的历史说说四、【SecLists】&#xff0…

emacs修改xml文件编码

最近修改了一个老Java项目&#xff0c;数据库中文乱码导致某些页面没有数据。查看处理数据库内容的XML文件的编码有GBK、GB2312、UTF-8&#xff0c;乱成一锅粥。为了统一成UTF-8&#xff0c;需要进入jar包修改XML文件。尝试过解jar包改编码再重新打jar包500的错误后&#xff0c…

C语言之长整型有符号数与短整型有符号数转换

最近考证的新星&#xff0c;问了一个问题&#xff1a;int a 1234565789;为什么在输出%hd时的值为-1379&#xff1f;其实这个很简单&#xff0c;只不过对于可能初入“编程坑”以及经验不是很丰富的朋友来说&#xff0c;感觉知道这么个道理&#xff0c;但就是解释不上来&#xf…

Hadoop生态圈框架部署(一)- Linux操作系统安装及配置

文章目录 前言一、下载CentOS镜像1. 下载 二、创建虚拟机hadoop1三、CentOS安装、克隆与配置1. 安装CentOS2. 根据虚拟机hadoop1克隆出虚拟机hadoop23. 根据虚拟机hadoop1克隆出虚拟机hadoop34. 配置虚拟网络及虚拟网卡4.1 配置虚拟网络4.1 配置虚拟网卡 5. 安装 SSH 远程连接工…

goalng框架Gin解析

本文通过案例的形式&#xff0c;说明gin框架的基本用法&#xff0c;主要列举后端的案例&#xff0c;前端和相对简单的知识点未在此分析&#xff1b; 过完案例后可以有个基本的印象&#xff1a;就是封装和简便 package mainimport ("fmt""github.com/gin-gonic/…

第十四题刮开有奖

这道题还是将我们下载好的附件先查壳 发现无壳且为32位 所以我们用32位的IDA打开 打开后ShftF12发现一串可疑的字符串 我们跟进看看 发现了这个函数 看这里有string数组 首先给了一串七v7 v8v9的数据 下面还有一个函数 我们再跟进一下 发现这大概是前面v7那堆数据的加密方式 我…

30. 串联所有单词的子串 C#实现

30. 串联所有单词的子串 困难 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 words ["ab","cd","ef"]…

前端js中如何保护密钥?

在前端js编程中&#xff0c;如果涉及到加密通信、加密算法&#xff0c;经常会用到密钥。 但密钥&#xff0c;很容易暴露。暴露原因&#xff1a;js代码透明&#xff0c;在浏览器中可以查看源码&#xff0c;从中找到密钥。 例如&#xff0c;下面的代码中&#xff0c;变量key是密…