寫一函式,準確地判斷欄位是否含有漢字或者提取漢字等

gugu99發表於2007-11-30
寫一函式,準確地判斷欄位是否含有漢字或者提取漢字等 從表裡提取漢字, 需要考慮字符集, 不同的字符集漢字的編碼有所不同這裡以GB2312為例, 寫一函式準確地從表裡提取簡體漢字. 假設資料庫字符集編碼是GB2312, 環境變數(登錄檔或其它)的字符集也是GB2312編碼並且儲存到表裡的漢字也都是GB2312編碼的 那麼也就是漢字是雙位元組的,且簡體漢字的編碼範圍是 B0A1 - F7FE 換算成10進位制就是 B0 A1 F7 FE 176,161 - 247,254 我們先看一下asciistr函式的定義 Non-ASCII characters are converted to the form xxxx, where xxxx represents a UTF-16 code unit. 但是這並不表示以 "" 開始的字元就是漢字了 舉例如下 SQL> select * from test; NAME -------------------- ,啊OO10哈你好aa 大家好aa/ ☆大海123 ★ABC 這裡第5條記錄有一個實心的五角星然後用asciistr函式轉換一下試試 SQL> select name,asciistr(name) from test; NAME ASCIISTR(NAME) -------------------- ---------------------- ,啊OO10哈 ,554AOO1054C8 你好aa 4F60597Daa 大家好aa/ 59275BB6597Daa/ ☆大海123 260659276D77123 ★ABC 2605ABC 我們看到最後一條記錄的實心五角星也是 ""開頭的此時我們就不能用asciistr(欄位)是否存在 "" 來判斷是否含有漢字了. 我的函式如下,基本思路是判斷字元的編碼是否在GB2312規定的漢字編碼範圍之內[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-986910/,如需轉載,請註明出處,否則將追究法律責任。

相關文章