ORACLE提取字串中 漢字 串的解決辦法

2021-12-30 12:23:45 字數 1052 閱讀 3137

我在在實際工作中常常要使用去特殊字元的功能,特別是插入到資料庫中的資料,我們為了保證資料的質量,往往需要對資料進行清洗,就是去掉特殊字元,我們處理問題的思路是:判斷字串中的每個字元是不是中文,如果是中文,將他們按照順序連線起來,如果不是,不要。

根據實際業務需求,共有2中解決方案:

方案一:

使用資料庫自帶函式length,lengthb。

中文下length返回的是字元個數,中文佔1字元,lengthb返回的是位元組個數,中文佔2位元組,根據中文的特性即可解決,但是實際情況往往不是特別理想,往往還存在著一些特殊字元,這些特殊字元和中文的字元數和位元組數一致,這時我們就不能準確判斷資料庫中的中文字元了,為了解決這個問題,建議方案二。

方案二:

使用ascii碼來區分中文和其它字元,中文的ascii碼值的範圍是45217~63486,根據這個來實現,我們就需要使用oracle中的函式ascii,用它來返回ascii值。

這種方式可以完美區分中文字元和其它字元。

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;

current_char varchar2(10);

begin

select length(custname) into count_str from dual;

while i45216 then

tmp_custname:=tmp_custname||current_char;

end if;

i:=i+1;

end loop;

result:=tmp_custname;

return(result);

end getcusttext;

以上是oracle中的實現方式,通過該方式可以快速,準確的識別中文字元。

提取 字串中 數字

include include include void main l if find break 有數字則退出迴圈 else printf 沒有數字 請重新輸入 n gets c 沒有則重新出入 l strlen c l strlen c printf 字串長度為 d n l for i 0 i ...

提取字串substring

substring 方法用於提取字串中介於兩個指定下標之間的字元。語法 stringobject.substring startpos,stoppos 引數說明 注意 1.返回的內容是從 start開始 包含start位置的字元 到 stop 1 處的所有字元,其長度為 stop 減start。2....

python提取字串中數字

題目 這是乙個複雜問題的簡化 如下是乙個字串列表,提取字串中第二個數字,並判斷是否大於1000,如果是,從列表中刪除這一行。1000 t1002 n 省略 coding utf 8 oldstr 1000 t1002 n newstr oldstr 匹配目標數字左側字串 t newstr.index...