新聞中心
oracle中如何判斷一個(gè)字符串是否含有漢字
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的紫金網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一.1 BLOG文檔結(jié)構(gòu)圖
一.2 前言部分
一.2.1 導(dǎo)讀
各位技術(shù)愛(ài)好者,看完本文后,你可以掌握如下的技能,也可以學(xué)到一些其它你所不知道的知識(shí),~O(∩_∩)O~:
①全角字符的判斷,或者是含有漢字的字符串的判斷
本文如有錯(cuò)誤或不完善的地方請(qǐng)大家多多指正,ITPUB留言或QQ皆可,您的批評(píng)指正是我寫作的最大動(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)部分。
一.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;
以下數(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');
所以可以借助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');
一.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;
一.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);
SELECT l.name,
to_multi_byte(l.name)
FROM xb_link l;
一.3.4 網(wǎng)友問(wèn)題解答:某個(gè)字段數(shù)據(jù)是不是包含了全角字符?
drop table aa;
create table aa (col varchar2(255));
SELECT *FROM aa for update;
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)));
一.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é)任!>
...........................................................................................................................................................................................
網(wǎng)站題目:oracle中如何判斷一個(gè)字符串是否含有漢字
標(biāo)題URL:http://fisionsoft.com.cn/article/ghpeog.html