Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          獲得字段數(shù)字部分
          ?
          ?
          ??? 在平常的數(shù)據(jù)處理中,特別是數(shù)據(jù)清洗階段,要獲取字段中數(shù)字部分往往都是經(jīng)常會用到的要求。所以專門找了一下有哪幾種方法可以實現(xiàn)這個功能。10g中已經(jīng)提供了正則表達式的功能,所以這個事情變得方便了很多,但是還是比較喜歡用translate函數(shù)來獲取的這個方法,非常巧妙,這個是轉(zhuǎn)載的地址: http://zhouwf0726.itpub.net/post/9689/191406
          ?
          --該腳本可以直接拷貝運行
          --現(xiàn)有字符串'23456中國3-00=.,45',想得到結(jié)果2345630045
          ?
          ?
          ?
          --方法一:translate函數(shù)
          select translate('23456中國3-00=.,45','0123456789'||'23456中國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中國3-00=.,45') from dual;
          ?
          ?
          --方法三:正則表達式
          --oracle10g以上版本
          select regexp_replace('23456中國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 閱讀(250) 評論(0)  編輯  收藏 所屬分類: 05.SQL
          主站蜘蛛池模板: 贵阳市| 伊吾县| 阿荣旗| 图木舒克市| 中宁县| 金塔县| 全南县| 滨州市| 中山市| 连平县| 施甸县| 新竹县| 乌拉特中旗| 光山县| 浦城县| 晋中市| 女性| 咸阳市| 泸溪县| 平阳县| 鄯善县| 建始县| 茶陵县| 长海县| 株洲市| 博客| 惠安县| 华亭县| 夹江县| 榆社县| 夏津县| 宝兴县| 平陆县| 六安市| 治县。| 江陵县| 上饶县| 舞钢市| 万载县| 海阳市| 资溪县|