Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評(píng)論 :: 0 Trackbacks
          獲得字段數(shù)字部分
          ?
          ?
          ??? 在平常的數(shù)據(jù)處理中,特別是數(shù)據(jù)清洗階段,要獲取字段中數(shù)字部分往往都是經(jīng)常會(huì)用到的要求。所以專門找了一下有哪幾種方法可以實(shí)現(xiàn)這個(gè)功能。10g中已經(jīng)提供了正則表達(dá)式的功能,所以這個(gè)事情變得方便了很多,但是還是比較喜歡用translate函數(shù)來(lái)獲取的這個(gè)方法,非常巧妙,這個(gè)是轉(zhuǎn)載的地址: http://zhouwf0726.itpub.net/post/9689/191406
          ?
          --該腳本可以直接拷貝運(yùn)行
          --現(xiàn)有字符串'23456中國(guó)3-00=.,45',想得到結(jié)果2345630045
          ?
          ?
          ?
          --方法一:translate函數(shù)
          select translate('23456中國(guó)3-00=.,45','0123456789'||'23456中國(guó)3-00=.,45','0123456789') from dual;
          ?
          ?
          --方法二:自定義函數(shù)
          create or replace function f_filter_str(var_str varchar) return varchar
          is
          var_str_new varchar2(2000);
          begin
          for i in 1..length(var_str) loop
          if ascii(substr(var_str,i,1))>=48 and ascii(substr(var_str,i,1))<=57 then
          var_str_new := var_str_new || substr(var_str,i,1);
          end if;
          end loop;
          return var_str_new;
          end f_filter_str;
          /
          ?
          select f_filter_str('23456中國(guó)3-00=.,45') from dual;
          ?
          ?
          --方法三:正則表達(dá)式
          --oracle10g以上版本
          select regexp_replace('23456中國(guó)3-00=.,45','[^0-9]') from dual;
          ?
          ?
          --方法四:
          create or replace and compile java source named stringutil as
          ?
          import Java.io.*;
          import Java.sql.*;
          ?
          public class StringUtil
          {
          public static String filterStr2Num(String str){
          String tmpstr = str;
          String savestr;
          String result = "";
          for (int i=0;i<tmpstr.length();i++){
          savestr = tmpstr.substring(i,i+1);
          if (StringUtil.isNumeric(savestr)){
          result+=savestr;
          }
          ?
          }
          return result;
          ?
          }
          ?
          public static String filterStr2Str(String str){
          String tmpstr = str;
          String savestr;
          String result = "";
          for (int i=0;i<tmpstr.length();i++){
          savestr = tmpstr.substring(i,i+1);
          if (!StringUtil.isNumeric(savestr)){
          result+=savestr;
          }
          ?
          }
          return result;
          ?
          }
          ?
          ?
          public static boolean isNumeric(String str){
          try{
          Integer.valueOf(str);
          return true;
          }catch(Exception e){
          return false;
          }
          }
          }
          ?
          --然后:
          create or replace function Java_filterStr2Num(str In Varchar) return varchar2 as
          LANGUAGE JAVA
          NAME 'StringUtil.filterStr2Num(java.lang.String) return java.lang.String';
          create or replace function Java_filterStr2Str(str In Varchar) return varchar2 as
          LANGUAGE JAVA
          NAME 'StringUtil.filterStr2Str(java.lang.String) return java.lang.String';
          ?
          --再然后
          Select java_filterStr2Num('254名字性345345別介紹') From dual; --取數(shù)字
          Select java_filterStr2Str('254名字性345345別介紹') From dual; --取文字
          ?
          ?
          ?
          posted on 2008-09-06 19:27 decode360 閱讀(246) 評(píng)論(0)  編輯  收藏 所屬分類: 05.SQL
          主站蜘蛛池模板: 德清县| 鹰潭市| 吉安市| 阳原县| 宁阳县| 杨浦区| 临城县| 东安县| 吴桥县| 台山市| 维西| 四川省| 泽普县| 建阳市| 武宣县| 阿勒泰市| 崇阳县| 苍梧县| 玛沁县| 道真| 秦皇岛市| 延寿县| 琼结县| 丽江市| 芷江| 花莲市| 石泉县| 陕西省| 陆川县| 芜湖县| 元江| 永丰县| 兰州市| 泰顺县| 思茅市| 仪征市| 元阳县| 四子王旗| 彝良县| 深州市| 武清区|