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...