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:原字符集

          posted on 2013-02-06 16:02 youngturk 閱讀(648) 評論(0)  編輯  收藏 所屬分類: Oracle

          <2013年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          242526272812
          3456789

          導航

          統計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結構
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南郑县| 东明县| 无极县| 东丰县| 沧州市| 海口市| 乳源| 高雄县| 临安市| 大方县| 达尔| 教育| 河东区| 辽阳市| 沈丘县| 嘉禾县| 万州区| 蓝山县| 长汀县| 遂川县| 齐齐哈尔市| 佛坪县| 宾阳县| 海口市| 萝北县| 油尖旺区| 平塘县| 湘潭市| 怀来县| 贵州省| 盘锦市| 大理市| 新民市| 德保县| 密云县| 泰州市| 五指山市| 静乐县| 肥城市| 石渠县| 策勒县|