判断全角字符oracle,oracle判断汉字和全角字符的方法

判断全角字符oracle,oracle判断汉字和全角字符的方法最近由于单位提了一个需求,要判断提供的用户名称里不有全角字符,至少有两个汉字。找了半天,想通过正则表达式来解决,但测试了好久才发现,oracle的正则函数REGEXP_LIKE不支持“\un匹配n,其中n是以四位十六进制数表示的Unicode字符”的判断,例如,最近由于单位提了一个需求,要判断提供的用户名称里不有全角字符,至少有两个汉字。找了半天,想通过正则表达式来解决,但测试了好久才…

最近由于单位提了一个需求,要判断提供的用户名称里不有全角字符,至少有两个汉字。找了半天,想通过正则表达式来解决,但测试了好久才发现,oracle的正则函数REGEXP_LIKE 不支持“\un匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符”的判断,例如,

最近由于单位提了一个需求,要判断提供的用户名称里不有全角字符,至少有两个汉字。找了半天,想通过正则表达式来解决,但测试了好久才发现,oracle的正则函数REGEXP_LIKE 不支持“\un 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符”的判断,例如,\u00A9 匹配版权符号 (?),而标准的正则是可以支持的,所以这个办法行不通,只能过期其他办法来实现。

在网上找了半天,都没有确切的实现办法,有通过Length()和lengthb ()来判断,但不完美,所以就把自己的写法记录下来希望能有用处。

对于全角字符,ascii值的范围是\uFF00-\uFFFF,都是FF段的,所以可以通过转换成ascii 来判断,instr(asciistr(replace( ‘在《<23\’, ‘\’)),’\FF’,1,1) > 0 就可以实现

对于汉字,范围太大,只能通过函数来完成,于是写了如下函数:

create or replace function get_chinese(v_name in varchar2) return integer is

i       int;

v_count integer;

v_code  varchar2(10);

begin

v_count := 0;

/**

作者:背包去流浪

QQ:380140243

用途:   返回字符串中汉字的个数

原理说明:  因为汉字的ASCII码值在4E00和9FA5之间,所以,可以将字符串转为ASCII后,判断连续的5位是否在这个范围,

是则为汉字,否则为其他字符。

返回值:    汉字个数

异常返回:  -1

*/

for i in 1 .. lengthb(asciistr(v_name)) – 4 loop

–if substr(asciistr(v_name),i,1)=’\’ then –有\则判断是否汉字

v_code := substr(asciistr(v_name), i, 5);

IF V_CODE BETWEEN ‘\4E00’ AND ‘\9FA5’ THEN

–汉字的asciid码值范围

v_count := v_count + 1; –有一个汉字

end if;

— dbms_output.put_line(v_code);

— end if;

end loop;

return v_count;

exception

when others then

return – 1; –异常返回-1

end get_chinese;

查询结果:

test.jsp?url=http%3A%2F%2Fimg.blog.csdn.net%2F20140305131916406%3Fwatermark%2F2%2Ftext%2FaHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl6aGlqdW45MTE%3D%2Ffont%2F5a6L5L2T%2Ffontsize%2F400%2Ffill%2FI0JBQkFCMA%3D%3D%2Fdissolve%2F70%2Fgravity%2FCenter&refer=http%3A%2F%2Fblog.csdn.net%2Flizhijun911%2Farticle%2Fdetails%2F20538747

今天的文章判断全角字符oracle,oracle判断汉字和全角字符的方法分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/4818.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注