溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

oracle中如何判斷一個(gè)字符串是否含有漢字

發(fā)布時(shí)間:2020-06-08 06:00:49 來(lái)源:網(wǎng)絡(luò) 閱讀:882 作者:小麥苗best 欄目:關(guān)系型數(shù)據(jù)庫(kù)

oracle中如何判斷一個(gè)字符串是否含有漢字

一.1 BLOG文檔結(jié)構(gòu)圖

oracle中如何判斷一個(gè)字符串是否含有漢字

一.2 前言部分
一.2.1 導(dǎo)讀

各位技術(shù)愛(ài)好者,看完本文后,你可以掌握如下的技能,也可以學(xué)到一些其它你所不知道的知識(shí),~O(∩_∩)O~:

①全角字符的判斷,或者是含有漢字的字符串的判斷

本文如有錯(cuò)誤或不完善的地方請(qǐng)大家多多指正,ITPUB留言或QQ皆可,您的批評(píng)指正是我寫(xiě)作的最大動(dòng)力。

一.2.2 實(shí)驗(yàn)環(huán)境介紹

11.2.0.3  RHEL6.5

一.2.3 本文簡(jiǎn)介

看到網(wǎng)友問(wèn),怎么查詢表中某個(gè)字段數(shù)據(jù)是不是包含了全角字符?。?這個(gè)問(wèn)題涉及到幾個(gè)個(gè)函數(shù):to_single_byte、length和lengthb,我之前做開(kāi)發(fā)的時(shí)候研究的是如何判斷一個(gè)字符串中是否包含中文,其實(shí)和這個(gè)本質(zhì)是一樣的,且看實(shí)驗(yàn)部分。

oracle中如何判斷一個(gè)字符串是否含有漢字

一.3 實(shí)驗(yàn)部分
一.3.1 lengthb和length函數(shù)結(jié)合to_single_byte函數(shù)

---含有漢字,嚴(yán)格的說(shuō)是含有全角字符

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中如何判斷一個(gè)字符串是否含有漢字

以下數(shù)據(jù)也滿足條件:

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中如何判斷一個(gè)字符串是否含有漢字

所以可以借助to_single_byte函數(shù)來(lái)解決。

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中如何判斷一個(gè)字符串是否含有漢字

一.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中如何判斷一個(gè)字符串是否含有漢字

一.3.3 to_multi_byte 函數(shù)--全是全角字符

---全是漢字

SELECT l.name,

       to_multi_byte(l.name)

FROM   xb_link l

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

oracle中如何判斷一個(gè)字符串是否含有漢字

SELECT l.name,

       to_multi_byte(l.name)

FROM   xb_link l;

oracle中如何判斷一個(gè)字符串是否含有漢字

一.3.4 網(wǎng)友問(wèn)題解答:某個(gè)字段數(shù)據(jù)是不是包含了全角字符?

drop table aa;

create table aa (col   varchar2(255));

SELECT * FROM aa for update;

oracle中如何判斷一個(gè)字符串是否含有漢字

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中如何判斷一個(gè)字符串是否含有漢字

一.4 總結(jié)

方法很簡(jiǎn)單,網(wǎng)友可能還有其他的辦法,歡迎留言,對(duì)于不同的場(chǎng)景處理方式有很多種,我們應(yīng)該學(xué)會(huì)靈活變通。

一.5 About Me

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

本文作者:小麥苗,只專注于數(shù)據(jù)庫(kù)的技術(shù),更注重技術(shù)的運(yùn)用

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

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

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

QQ:642808185 若加QQ請(qǐng)注明你所正在讀的文章標(biāo)題

創(chuàng)作時(shí)間地點(diǎn):2015-06-05 10:00~ 2015-06-05 13:00 于×××交易中心

<版權(quán)所有,文章允許轉(zhuǎn)載,但須以鏈接方式注明源地址,否則追究法律責(zé)任!>

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

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI