oracle中过滤中文字符或者汉字的函数
CREATE OR REPLACE FUNCTION GET_CHINESE(P_NAME IN VARCHAR2) RETURN VARCHAR2 IS
V_CODE VARCHAR2(30000) := '';
V_CHINESE VARCHAR2(4000) := '';
V_NON_CHINESE VARCHAR2(4000) := '';
V_COMMA PLS_INTEGER;
V_CODE_Q PLS_INTEGER;
V_CODE_W PLS_INTEGER;
BEGIN
IF P_NAME IS NOT NULL THEN
SELECT REPLACE(SUBSTRB(DUMP(P_NAME, 1010), INSTRB(DUMP(P_NAME, 1010), 'ZHS16GBK:')), 'ZHS16GBK: ', '') INTO V_CODE FROM DUAL WHERE ROWNUM = 1;
FOR I IN 1 .. LENGTH(P_NAME) LOOP
IF LENGTHB(SUBSTR(P_NAME, I, 1)) = 2 THEN
V_COMMA := INSTRB(V_CODE, ',');
V_CODE_Q := TO_NUMBER(SUBSTRB(V_CODE, 1, V_COMMA - 1));
V_CODE_W := TO_NUMBER(SUBSTRB(V_CODE, V_COMMA + 1, ABS(INSTRB(V_CODE, ',', 1, 2) - V_COMMA - 1)));
IF V_CODE_Q >= 176 AND V_CODE_Q <= 247 AND V_CODE_W >= 161 AND V_CODE_W <= 254 THEN
V_CHINESE := V_CHINESE || SUBSTR(P_NAME, I, 1);
ELSE
V_NON_CHINESE := V_NON_CHINESE || SUBSTR(P_NAME, I, 1);
END IF;
V_CODE := LTRIM(V_CODE, '1234567890');
V_CODE := LTRIM(V_CODE, ',');
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;*/
IF LENGTH(V_CHINESE) > 0 THEN
RETURN V_CHINESE;
ELSIF LENGTH(V_NON_CHINESE) > 0 THEN
RETURN V_NON_CHINESE;
ELSE
RETURN '';
END IF;
ELSE
RETURN '';
END IF;
END GET_CHINESE;
使用方法:SELECT /*+ parallel(a,10)*/ A.*, ROWID FROM ABC_TABLE A where length(GET_CHINESE(logic_phone))>0
oracle中过滤中文字符或者汉字的函数的更多相关文章
- 如何利用java把文件中的Unicode字符转换为汉字
有些文件中存在Unicode字符和非Unicode字符,如何利用java快速的把文件中的Unicode字符转换为汉字而不影响文件中的其他字符呢, 我们知道虽然java 在控制台会把Unicode字符直 ...
- java面试题:如果一串字符如"aaaabbc中国1512"要分别统计英文字符的数量,中文字符的数量,和数字字符的数量,假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符。
package com.swift; public class TotalNumber_String { public static void main(String[] args) { /* * 如 ...
- Tomcat 中get请求中含有中文字符时乱码的处理
Tomcat 中get请求中含有中文字符时乱码的处理
- WP8_UTF8 to GB2312转码 (url网址中带中文字符的处理)
直接使用例如:http://www.abc.php?name=中文符 ,客户端调用,在服务端修改后,会出现乱码, 而windows phone 又不能直接支持gb2312, 经过大量分析和验证,发现 ...
- python 连接数据库-设置oracle ,mysql 中文字符问题
import cx_Oracle import MySQLdb def conn_oracle(): cnn = cx_Oracle.connect('用户名','密码','ip:端口号/数据库') ...
- url为什么要编码及php中的中文字符urlencode基本原理
首先了解以下中文字符在使用urlencode的时候运用的基本原理: urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. 此字符串中除了 -_. 之外的所 ...
- 使用Java判断字符串中的中文字符数量
Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...
- java中Cookie中文字符乱码问题
如果Cookie中的Value 中有中文字符出现,在加入Cookie的时候,会出现下面的错误: java.lang.IllegalArgumentException: Control characte ...
- 解决osg路径与文件名中的中文字符问题
转至:http://blog.csdn.net/zhuqinglu/article/details/2064013 在打开或者保存一个osg模型的时候,经常遇到中文路径或者中文文件名的问题,此时会提示 ...
随机推荐
- vue的路由设置小结
vue的路由设置小结 // 异步路由的编写示例.其中针对component字段进行懒加载及分块处理,提升首屏加载速度的同时,也可以手动控制让某些页面合并到一个单独的js文件中,而不是每个页面都是一个j ...
- tyvj——P1002 谁拿了最多奖学金
P1002 谁拿了最多奖学金 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发 ...
- 【bzoj1977】【严格次小生成树】倍增维护链上最大次大值
(上不了p站我要死了,侵权度娘背锅) Description 小 C 最近学了很多最小生成树的算法,Prim 算法.Kurskal 算法.消圈算法等等. 正当小 C 洋洋得意之时,小 P 又来泼小 C ...
- mOOC 编绎原理
http://mooc.study.163.com/course/YOOKCS0009-1000002001#/info http://study.163.com/series/1001245004. ...
- 使用size()方法输出列表中的元素数量。需要注意的是,这个方法返回的值可能不是真实的,尤其当有线程在添加数据或者移除数据时,这个方法需要遍历整个列表来计算元素数量,而遍历过的数据可能已经改变。仅当没有任何线程修改列表时,才能保证返回的结果是准确的。
使用size()方法输出列表中的元素数量.需要注意的是,这个方法返回的值可能不是真实的,尤其当有线程在添加数据或者移除数据时,这个方法需要遍历整个列表来计算元素数量,而遍历过的数据可能已经改变.仅当没 ...
- 部署步骤“回收 IIS 应用程序池”中出现错误: 无法将通信对象 System.ServiceModel.InstanceContext 用于通信,因为它已经被中止。
??? 重启iis应用程序池和网站都不管用,重启vs就好了,一脸懵逼. 有没有更好的方法?
- Uri详解之——Uri结构与代码提取
目录(?)[+] 前言:依然没有前言…… 相关博客:1.<Uri详解之——Uri结构与代码提取>2.<Uri详解之二——通过自定义Uri外部启动APP与Notification启动& ...
- 区别dependencies、devDependencies
我们在使用npm install 安装模块或插件的时候,有两种命令把他们写入到 package.json 文件里面去,他们是: --save-dev 或 --save 首先需要说明的是Dependen ...
- Struts2实现登录权限访问控制
目录: Ⅰ 条件 Ⅱ 目的 Ⅲ 分析 Ⅳ 实现 Ⅴ 具体代码实现 ------------------------------------------------------------------- ...
- python 常用的模块(base64)转
Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...