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模型的时候,经常遇到中文路径或者中文文件名的问题,此时会提示 ...
随机推荐
- Educational Codeforces Round 1D 【DFS求联通块】
http://blog.csdn.net/snowy_smile/article/details/49924965 D. Igor In the Museum time limit per test ...
- ACM阶段总结(2016.10.07-2016.11.09)
来这里也有一段时间了…… 总感觉自己练得不是很有效. 最近的一些行动就是不断做比赛,然后不停地补,但是感觉这样像只无头苍蝇,没有效果,学不到什么真正的东西. 最近开始打算补专题,做做codeforce ...
- HDU6380 2018 “百度之星”程序设计大赛 - 初赛(B) A-degree (无环图=树)
原题地址 degree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- geant4开发平台的构建方案的讨论a
首先比较linux和windows下的平台的不同的功能 linux通过命令进行一系列操作,对于不习惯命令的也可以用鼠标,但是就显得过于落后,因为命令的存在自然表明其先进性. linux下的geant4 ...
- Linked List Random Node -- LeetCode
Given a singly linked list, return a random node's value from the linked list. Each node must have t ...
- BZOJ2038 [2009国家集训队]小Z的袜子(hose)(莫队算法)
神奇的莫队算法,用来解决可离线无修改的区间查询问题: 首先对原序列进行分块,√n块每块√n个: 然后对所有查询的区间[l,r]进行排序,首先按l所在的块序号升序排序,如果一样就按r升序排序: 最后就按 ...
- [POI2014]Little Bird
题目大意: $n(n\le10^6)$个点排成一排,每个点有一个高度$h_i$,现在要从$1$号点跳到$n$号点,从$i$号点出发跳到的点$j$满足$i<j\le i+k$,若$h_j\ge h ...
- lua的深拷贝和浅拷贝
--- Deep copies a table into a new table. -- Tables used as keys are also deep copied, as are metata ...
- mysql----kill慢查询
每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程. 如果您拥有SUPER权限,您 ...
- Linux文本过滤命令grep、awk、sed
grep的使用: 一.grep一般格式: grep [选项] 基本正则表达式 [文件] 这里的正则表达式可以为字符串.在grep命令中输入字符串参数时,最好将其用双引号括起来.调用变量时也可以使用双引 ...