Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks

          http://zhouwf0726.itpub.net/post/9689/191406

          ?

          -- 該腳本可以直接拷貝運行

          -- 現有字符串 '23456 中國 3-00=.,45' ,想得到結果 2345630045

          ?

          ?

          -- 方法一: translate 函數

          select translate( '23456 中國 3-00=.,45' , '0123456789' || '23456 中國 3-00=.,45' , '0123456789' ) from dual;

          ?

          ?

          -- 方法二:自定義函數。

          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; -- 取數字

          Select java_filterStr2Str( '254 名字性 345345 別介紹 ' ) From dual; -- 取文字

          ?

          ?




          -The End-

          posted on 2008-09-06 19:27 decode360-3 閱讀(153) 評論(0)  編輯  收藏 所屬分類: SQL Dev
          主站蜘蛛池模板: 揭西县| 萝北县| 九龙坡区| 新建县| 岳西县| 钟山县| 大丰市| 衡阳市| 房产| 肥西县| 临沭县| 尉犁县| 兴隆县| 呼玛县| 虎林市| 盖州市| 泰兴市| 馆陶县| 平顺县| 维西| 安顺市| 芦山县| 岳西县| 阿克苏市| 南和县| 田东县| 新疆| 满城县| 白水县| 浙江省| 子洲县| 洮南市| 康乐县| 于都县| 巫溪县| 永登县| 洛扎县| 渭南市| 波密县| 炉霍县| 富顺县|