oracle中如何判断一个字符串是否含有汉字
admin
2023-05-09 13:42:02
0次

oracle中如何判断一个字符串是否含有汉字

一.1 BLOG文档结构图

oracle中如何判断一个字符串是否含有汉字

一.2 前言部分
一.2.1 导读

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

①全角字符的判断,或者是含有汉字的字符串的判断

本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。

一.2.2 实验环境介绍

11.2.0.3  RHEL6.5

一.2.3 本文简介

看到网友问,怎么查询表中某个字段数据是不是包含了全角字符啊? 这个问题涉及到几个个函数:to_single_byte、length和lengthb,我之前做开发的时候研究的是如何判断一个字符串中是否包含中文,其实和这个本质是一样的,且看实验部分。

oracle中如何判断一个字符串是否含有汉字

一.3 实验部分
一.3.1 lengthb和length函数结合to_single_byte函数

---含有汉字,严格的说是含有全角字符

SELECT l.name,

length(l.name),

lengthb(l.name)

FROM   xb_link l

WHERE length(l.name) != lengthb(l.name)

AND length(l.name) < 20;

oracle中如何判断一个字符串是否含有汉字

以下数据也满足条件:

SELECT l.id,

        l.name

FROM   xb_link l

WHERE length(l.name) != lengthb(l.name)

AND    l.metacategory IN

('com.gxlu.ngrm.network.DDNCircuit',

'com.gxlu.ngrm.network.FRCircuit',

'com.gxlu.ngrm.network.ATMCircuit',

'com.gxlu.ngrm.network.DDNOCircuit',

'com.gxlu.ngrm.network.FROCircuit')

AND    l.id IN ('301898331', '301898335', '301908187', '301929403');

oracle中如何判断一个字符串是否含有汉字

所以可以借助to_single_byte函数来解决。

SELECT l.id,

        l.name,

        to_single_byte(l.name),

length(l.name) l1,

lengthb(l.name) l2,

length(to_single_byte(l.name)) l

FROM   xb_link l

WHERE length(l.name) != lengthb(l.name)

AND    l.metacategory IN

('com.gxlu.ngrm.network.DDNCircuit',

'com.gxlu.ngrm.network.FRCircuit',

'com.gxlu.ngrm.network.ATMCircuit',

'com.gxlu.ngrm.network.DDNOCircuit',

'com.gxlu.ngrm.network.FROCircuit')

AND    l.id IN ('301898331', '301898335', '301908187', '301929403');

oracle中如何判断一个字符串是否含有汉字

一.3.2 regexp_replace --替换其它字符为’’

SELECT

l.id,

l.name

FROM   xb_link l

WHERE  regexp_replace(TRIM(l.name),

'([A-Za-z0-9]|[[:punct:]]|[[:space:]])',

'') IS NOT NULL;

oracle中如何判断一个字符串是否含有汉字

一.3.3 to_multi_byte 函数--全是全角字符

---全是汉字

SELECT l.name,

       to_multi_byte(l.name)

FROM   xb_link l

WHERE  l.name = to_multi_byte(l.name);

oracle中如何判断一个字符串是否含有汉字

SELECT l.name,

       to_multi_byte(l.name)

FROM   xb_link l;

oracle中如何判断一个字符串是否含有汉字

一.3.4 网友问题解答:某个字段数据是不是包含了全角字符?

drop table aa;

create table aa (col   varchar2(255));

SELECT * FROM aa for update;

oracle中如何判断一个字符串是否含有汉字

SELECT a.col,

       to_single_byte(a.col),

length(a.col),

lengthb(a.col),

length(to_single_byte(a.col)),

lengthb(to_single_byte(a.col))

FROM   aa a

WHERE (lengthb(a.col) - length(a.col)) <>

(lengthb(to_single_byte(a.col)) - length(to_single_byte(a.col)));

oracle中如何判断一个字符串是否含有汉字

一.4 总结

方法很简单,网友可能还有其他的办法,欢迎留言,对于不同的场景处理方式有很多种,我们应该学会灵活变通。

一.5 About Me

...........................................................................................................................................................................................

本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

ITPUB BLOG:http://blog.itpub.net/26736162

本文地址:http://blog.itpub.net/26736162/viewspace-1688209/

本文pdf版:http://yunpan.cn/QCwUAI9bn7g7w 提取码:af2d

QQ:642808185 若加QQ请注明你所正在读的文章标题

创作时间地点:2015-06-05 10:00~ 2015-06-05 13:00 于×××交易中心

<版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任!>

...........................................................................................................................................................................................

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...