oracle 判断中文函数
create or replace function func_chinese
(
p_str in varchar2, -- 输入的字符串
p_code in varchar2, -- dump(字符串)
p_chinese in pls_integer -- 1, 提取汉字, 非1, 提取非汉字
) return varchar2
as
v_code varchar2(32767) := substr(p_code,instr(p_code,':')+2);
v_chinese varchar2(32767) := '';
v_non_chinese varchar2(32767) := '';
v_comma pls_integer;
v_code_h pls_integer;
v_code_l pls_integer;
begin
if p_str is not null then
for i in 1..length(p_str) loop
if lengthb(substr(p_str,i,1))=2 then
v_comma := instr(v_code,',');
v_code_h := to_number(substr(v_code,1,v_comma-1));
v_code_l := to_number(substr(v_code,v_comma+1,abs(instr(v_code,',',1,2)-v_comma-1)));
if (v_code_h>=176 and v_code_h<=247 and v_code_l>=161 and v_code_l<=254) or
(v_code_h>=129 and v_code_h<=160 and v_code_l>=64 and v_code_l<=254 and nvl(v_code_l,127)!=127) or
(v_code_h>=170 and v_code_h<=254 and v_code_l>=64 and v_code_l<=160 and nvl(v_code_l,127)!=127) then
v_chinese := v_chinese||substr(p_str,i,1);
else
v_non_chinese := v_non_chinese||substr(p_str,i,1);
end if;
v_code := ltrim(v_code,'1234567890');
v_code := ltrim(v_code,',');
else
v_non_chinese := v_non_chinese||substr(p_str,i,1);
end if;
v_code := ltrim(v_code,'1234567890');
v_code := ltrim(v_code,',');
end loop;
if p_chinese = 1 then
return v_chinese;
else
return v_non_chinese;
end if;
else
return '';
end if;
end;
/
SQL> select * from t;
NAME
----------------------
新年快乐X
狿X
狿
199
春天会来的
-----------------------
实验1: 提取汉字
-----------------------
select name,func_chinese(name,dump(name),1) result from t;
NAME RESULT
------------------------------ -----------
新年快乐X 新年快乐
狿X 狿
狿 狿
199
春天会来的 春天会来的
-----------------------
实验2: 提取非汉字
-----------------------
select name,func_chinese(name,dump(name),0) result from t;
NAME RESULT
------------------------------ -------
新年快乐X X
狿X X
狿
199 199
春天会来的
-----------------------
oracle 判断中文函数的更多相关文章
- Oracle LPAD/RPAD函数在处理中文时的注意事项
首先看下Oracle官方对函数的定义: The RPAD function returns an expression, right-padded to a specified length with ...
- Oracle提取中文字符串拼音首字母函数
通过oracle的NLSSORT函数对汉字按照拼音排序,然后根据汉字的区间返回对应的首字母. 效果1,获取拼音简码: 效果2,获取姓名首字母: 创建函数: /* 获取拼音简码函数 */ CREATE ...
- ORACLE SQL单行函数(三)【weber出品必属精品】
16.L:代表本地货币符,这个和区域有关.这个时候我们想来显示一下人民币的符号:¥ $ vi .bash_profile ---写入如下内容: export NLS_LANG='SIMPLIFIED ...
- oracle常用自定义函数集合
1.Oracle 判断值是否为数字的函数CREATE OR REPLACE FUNCTION ISNUMBER(MyStr VARCHAR2) RETURN NUMBERIS STR VARCHAR ...
- Oracle中中文、数字,英文混杂形式的字段进行排序的方法
http://blog.csdn.net/p451933505/article/details/9272257 对Oracle中中文.数字.英文混杂形式的字段进行排序的方法: 例如: order by ...
- [转载]ORACLE日期时间函数大全
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 ...
- Oracle常用单行函数(原创)
前言: 想把单行函数进行一个比较全面的总结,并分享给有需要的人,有不明之处还请多多指教. SQL函数:Oracle的内置函数,包括了单行函数和多行函数,本文重点讲解单行函数.单行函数又可以分为许多类, ...
- Oracle的overlaps函数转换其他数据库语法
首先,来介绍一下Oracle的overlaps函数的用法: overlaps函数是用来判断两个时间段是否有重叠的 比如说计算 (a,b),(c,d) 就可以写成: select * from dual ...
- C#.NET ORM FreeSql 读取使用 US7ASCII 的 Oracle 数据库中文显示乱码问题
前言 关于 Oracle US7ASCII 中文乱码的问题,Ado.Net 和 Odbc 无法解决.包括最新的.Net Core..NET6..NET7 都无法解决这个问题. FreeSql 对 Or ...
随机推荐
- JQuery一些基础笔记
JQuery学完了,总结一下一些需要掌握的知识点.首先什么是JQuery 说白了就是有JavaScript衍生出来的一个产物,它呢兼容各种浏览器,但是前提你要用这个JQ的话首先呢你就要引入JQ库.学过 ...
- C# Winform程序获取外网IP地址
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址了 Uri uri = new Uri(strUrl); ...
- 【转】移动端viewport的使用
web端网站转移至移动端页面,注意点如下: 1.首先引入viewport调整页面宽度 <meta name="viewport" content="width=de ...
- python 传值引用和传参引用
调用同事的函数,传入goods_list,获取商品信息,然后将商品信息与goods_list的信息进行匹配,合并. 但是同事返回数据的同时改变了我传入的参数,goods_list.相当于传参引用,也就 ...
- nginx实现访问网站或目录密码认证保护
添加目录登陆认证 location / { auth_basic "提示"; auth_basic_user_file /usr/conf/htpasswd; } auth_bas ...
- 制作DIP Package及DIP焊盘制作,不规则焊盘制作
DIP的焊盘制作: 1.启动Pad Designer. 2.New一个焊盘,取一个名字.圆形通孔长方形pad4_0r2_3cir1_5md,圆形通孔正方形pad4_0sq2_4md,圆形通孔圆形pad ...
- kafka go producer 启动基本配置
1.官网上下载kafka安装包:http://kafka.apache.org/downloads.html 2.执行命令运行zookeeper 实例(单点): bin/zookeeper-serve ...
- Entity Framework 4 数据事务操作
利用数据库链接进行事务操作 var db = ConnectionHelper.GetConn(ConnectionType.Write);//获取上下文 var conn = db.Connecti ...
- VisualSvn server 权限配置
库上,配置 EveryOne 有读写权限. 下面的文件夹,再根据情况,取消 EveryOne 的读写权限,添加另一个用户组的读写权限. 它的规则是: 子目录权限覆盖父目录权限.
- [游戏学习22] MFC 井字棋 双人对战
>_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也 ...