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 閱讀(157) 評論(0)  編輯  收藏 所屬分類: SQL Dev
          主站蜘蛛池模板: 罗平县| 丹阳市| 蒙山县| 靖江市| 泉州市| 蒲城县| 连云港市| 黄浦区| 封开县| 芷江| 宜昌市| 浪卡子县| 霍林郭勒市| 海安县| 余江县| 双柏县| 且末县| 张家港市| 鱼台县| 梁河县| 定结县| 井研县| 平果县| 同德县| 化州市| 南康市| 黔东| 丁青县| 铜山县| 扎兰屯市| 府谷县| 新巴尔虎右旗| 南陵县| 德庆县| 仙游县| 南部县| 教育| 青州市| 岳池县| 丰台区| 巴林右旗|