论坛首页 综合技术论坛

自定义oracle function 函数的应用.!!

浏览 2648 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-05-19   最后修改:2010-05-19
最近在做一个东西,查询字母在某个位置的数据..以下是我的做法.和大家分享下.如果有更好的方法,希望大家也能分享下.多交流多学习嘛..


--函数1    
--作用  判断是否为数字   
create or replace function isNumber(p_in varchar2) return varchar2 as   
  i number;   
begin   
 --是否有E字母,因为程序会将字母 E 解析为数字 如果有,直接返回FALSE   
  if(instr(p_in,'E') = 0) then   
      i := to_number(p_in);   
      return 'TRUE';   
  else    
       return 'FALSE';   
  end if;   
exception   
  when others then   
    return 'FALSE';   
end;  


--函数2
--作用 判断第几位为字符
create or replace function findCharToPostion(p_in varchar2, p_positon number)
 return  varchar2 as
  c char(1);
  i number;
begin
  select substr(p_in,p_positon,1) into c from dual;
  if (c = 'E') then 
      return 'TRUE';
  else
      i := to_number(c);
      return 'FALSE';
  end if;
  exception 
     when others then
      return 'TRUE';
end findCharToPostion;



使用方法:
--找出[Column]第三位为字符的所有数据
select * from TABLE where findCharToPostion(Column,3) = 'TRUE';
--找出[Column]第四位为字符的所有数据
select * from TABLE where findCharToPostion(Column,4) = 'TRUE';


只是一个简单的例子,我想说的是,有时候函数也能帮我们解决很多头疼的问题...!!

希望能对大家有所启发..!!!!
   发表时间:2010-05-19  
函数1 isNumber使用方法


--找出某列所有为数字的数据
select * from TABLE where isNumber(column) = 'TRUE';
--找出某列不全为数字的数据
select * from TABLE where isNumber(column) = 'FALSE';
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics