當前位置:編程學習大全網 - 源碼下載 - Oracle判斷字段中是否包含中文(若有,取出該中

Oracle判斷字段中是否包含中文(若有,取出該中

壹、問題說明

在處理數據的時候,需要判斷某個字段字符串中是否有中文,若有則取出中文。

二、解決辦法

首先如何判斷某個字段字符串中是否有中文。這裏介紹三種方法:

1、采用ASCIISTR函數

說明:ASCIISTR函數用於返回字符的ASCII形式的字符串;非ASCII的字符被轉化為\xxxx的形式。換句話說:如果字符中包含中文,則必定會有\xxxx的字符。

所以,我們直接利用ASCIISTR函數匹配'\'即可判斷。

2、采用length和lengthb的原理

說明:中文下length返回的是字符個數,中文占1字符,lengthb返回的是字節個數,中文占2字節,根據中文的特性即可解決。

3、使用CONVERT函數判別

說明:CONVERT(要轉換的字符串,目標字符集,原字符集),CONVERT函數用於轉換字符串的字符集;所以我們可以利用中文的字符集是utf-8來判斷。

上面介紹了如何判斷某個字段字符串中是否有中文,在成功判斷字段中是否有中文之後;那麽該如何取出字段中的中文呢?

這裏介紹壹種快速準確的辦法:

函數創建成功後,直接傳jldw調用就可獲取該字符的中文了。

源碼如下:

create or replace function getCustText(custName varchar2) return varchar2 is

Result varchar2(100); --返回的結果字符串

tmp_custName varchar2(100); ? --臨時變量

count_str number; --字符串中字符的個數

i number:=1; ?--循環變量

str_ascii number; --當前等待判斷字符的ascii碼

current_char varchar2(10); ?--當前等待判斷的字符

begin

select length(custName) into count_str from dual; --取出待處理字符串的長度

while i<count_str loop ---根據待處理字符串長度(counts)?,逐個字符判斷處理

current_char:=substr(custName,i,1);

select ASCII(current_char) into str_ascii from dual;

if str_ascii>45216 then

tmp_custName:=tmp_custName||current_char;

end if;

i:=i+1;

end loop;

Result:=tmp_custName;

return(Result);

end getCustText;

  • 上一篇:API的中文全稱
  • 下一篇:機器視覺方面有哪些好的開發平臺?各有什麽特點
  • copyright 2024編程學習大全網