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 阅读(144) 评论(0)  编辑  收藏 所属分类: SQL Dev

只有注册用户登录后才能发表评论。


网站导航: