Oracle中如何用SQL檢測字段是否包括中文字元

2021-08-25 15:10:50 字數 757 閱讀 9490

oracle中如何用sql檢測字段是否包括中文字元

今天有乙個同事的資料遷移程式有個問題,沒有考慮中文編碼字元,由於遷移的表有幾千萬資料,但是有中文的記錄集很少,問我能否找出有中文內容的記錄數。首先我想到的是採用檢測每個位元組ascii的方式,這樣的話需要寫乙個自定義函式,然後sql中呼叫得到結果。但是感覺這個方法估計很耗時,畢竟每個字元都要比較,所以沒有去實現。突然想到oracle有乙個編碼轉換的函式叫convert,如果乙個字串編碼轉換前後不一樣就表示字串裡面含有非ascii字元,這樣就得到結果。最後寫出來測試了一下,確實可行,5500萬記錄10秒鐘就掃瞄結束。以下是測試用例:

sql> select *

2 from (select 'abcd' c1 from dual

3 union all

4 select 'ab測試cd' c1 from dual)

5 where c1 <> convert(c1, 'us7ascii', 'zhs16gbk');

c1--------

ab測試cd

convert函式說明:

convert(inputstring,dest_charset,source_charset)

inputstring:要轉換的字串

dest_charset:目標字符集

source_charset:原字符集

這只是乙個小技巧,也許有一天你也有這樣的需求,或許能派上用場。

Oracle中如何用SQL檢測字段是否包括中文字元

oracle中如何用sql檢測字段是否包括中文字元 今天有乙個同事的資料遷移程式有個問題,沒有考慮中文編碼字元,由於遷移的表有幾千萬資料,但是有中文的記錄集很少,問我能否找出有中文內容的記錄數。首先我想到的是採用檢測每個位元組ascii的方式,這樣的話需要寫乙個自定義函式,然後sql中呼叫得到結果。...

Oracle中如何用SQL檢測字段是否包括中文字元

資料遷移程式有個問題,沒有考慮中文編碼字元,由於遷移的表有幾千萬資料,但是有中文的記錄集很少,問我能否找出有中文內容的記錄數。首先我想到的是採用檢測每個位元組ascii的方式,這樣的話需要寫乙個自定義函式,然後sql中呼叫得到結果。但是感覺這個方法估計很耗時,畢竟每個字元都要比較,所以沒有去實現。突...

Oracle中如何用SQL檢測字段是否包

oracle有乙個編碼轉換的函式叫 convert 如果乙個字串編碼轉換前後不一樣就表示字串裡面含有非 ascii 字元,這樣就得到結果。convert函式說明 convert inputstring,dest charset,source charset inputstring 要轉換的字串 de...