判断全角字符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;

/

作者:背包去流浪

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

原理说明:  因为汉字的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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215693.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:39
下一篇 2026年3月18日 下午1:39


相关推荐

  • ONF组织的SDN架构文档——原理与架构构件(二/二)

    ONF组织的SDN架构文档——原理与架构构件(二/二)4 4 应用层图 4 4 扩展了图 3 3 中 SDN 架构里的 SDNapplicati 块 SDN 原则允许应用在业务和策略允许的前提下指定需要的网络资源和行为 从 SDN 到应用程序层的接口叫做 A CPI 图 4 9 显示 SDN 应用自身就可以支持 A CPI 代理 用来为其他应用层次提供查询功能 这将在 4 1 部分中介绍 应用层中不同层次的应用 根据器所处的层次高低会有不同程度的抽象 注 SDN 社区经常把 A

    2026年3月18日
    2
  • 大数据的两种处理方式是什么_大数据的基本处理模式

    大数据的两种处理方式是什么_大数据的基本处理模式大数据的处理方式有两种:基于内存的流式处理和基于硬盘的存储处理。流式处理就好象是在经过的数据面前建一道水闸。数据流过这里,经过闸门的时候,就进行筛选过滤,分析出有价值的内容,然后丢弃,以后也不再使用

    2022年8月5日
    8
  • 别在 OpenClaw 上花冤枉钱了,这份小白指南手把手教你 1 分钟搞定

    别在 OpenClaw 上花冤枉钱了,这份小白指南手把手教你 1 分钟搞定

    2026年3月13日
    2
  • mmap 内存映射详解

    mmap 内存映射详解mmap基础概念mmap是一种内存映射的方法,这一功能可以用在文件的处理上,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。在编程时可以使某个磁盘文件的内容看起来像是内存中的一个数组。如果文件由记录组成,而这些记录又能够用结构体来描述的话,可以通过访问结构数组来更新文件的内容。实现这样的映射关系后,进程就可以采用指针的方式读写操…

    2022年6月22日
    38
  • Wireshark抓包——TCP协议分析

    Wireshark抓包——TCP协议分析一 实验目的通过本次实验 掌握使用 Wireshark 抓取 TCP IP 协议数据包的技能 能够深入分析 TCP 帧格式及 TCP 三次握手 通过抓包和分析数据包来理解 TCP IP 协议 进一步提高理论联系实践的能力 二 实验内容 1 本次实验重点 利用 Wireshark 抓 TCP 包及 TCP 包的分析 2 本次实验难点 分析抓到的 TCP 包 3 本次实验环境 Windows7 Wiresha

    2026年3月18日
    2
  • wget(1.11.4) for win「建议收藏」

    wget(1.11.4) for win「建议收藏」下载wget(1.11.4)forwin安装添加wget环境变量,这样使用就更方便了,右键计算机->属性->高级系统设置->高级->环境变量->选中PATH->编辑,在最后添加;C:\ProgramFiles(x86)\GnuWin32\bin下载文件wget网址而要让档案自动储存到指令的目录下,则需要借用-P这个参数,可以使用以下的指令wge…

    2022年6月3日
    32

发表回复

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

关注全栈程序员社区公众号