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

          有個問題,沒有考慮中文編碼字符,由于遷移的表有幾千萬數(shù)據(jù),但是有中文的記錄集很少,問我能否找出有中文內(nèi)容的記錄數(shù)。首先我想到的是采用檢測每個字節(jié)ASCII的方式,這樣的話需要寫一個自定義函數(shù),然后SQL中調(diào)用得到結(jié)果。但是感覺這個方法估計很耗時,畢竟每個字符都要比較,所以沒有去實現(xiàn)。突然想到Oracle有一個編碼轉(zhuǎn)換的函數(shù)叫Convert,如果一個字符串編碼轉(zhuǎn)換前后不一樣就表示字符串里面含有非ASCII字符,這樣就得到結(jié)果。最后寫出來測試了一下,確實可行,5500萬記錄10秒鐘就掃描結(jié)束。以下是測試用例:

          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函數(shù)說明:

          CONVERT(inputstring,dest_charset,source_charset)

          inputstring:要轉(zhuǎn)換的字符串

          dest_charset:目標(biāo)字符集

          source_charset:原字符集

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

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

          導(dǎo)航

          統(tǒng)計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結(jié)構(gòu)
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學(xué)習(xí)

          Flex學(xué)習(xí)

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永川市| 宜川县| 新平| 贵定县| 南宫市| 鹤壁市| 错那县| 什邡市| 涞源县| 河南省| 太白县| 黄龙县| 武威市| 石楼县| 即墨市| 玉树县| 磐石市| 竹溪县| 满城县| 道真| 黄陵县| 陕西省| 邹城市| 新兴县| 尼玛县| 皮山县| 平舆县| 曲周县| 哈巴河县| 绵阳市| 永清县| 石门县| 崇文区| 醴陵市| 阿克陶县| 长兴县| 犍为县| 富民县| 女性| 馆陶县| 平顺县|