加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

oracle判断字段中值是否为数字或者为字母方法收集

(2013-04-13 14:21:41)
分类: oracle

方法一:

create or replace function Isnumber(P_column in varchar2) return number is

  l_t number;

begin

  l_t := to_number(P_column);

  return 1;

exception

  when others then

    return 0;

end;

/

 

--测试

SQL> create table t (a varchar2(10));

 

表已创建。

 

SQL> begin

  2  insert into t values('abc');

  3  insert into t values('123');

  4  insert into t values('cde');

  5  insert into t values('456122');

  6  insert into t values('efd4554');

  7  commit;

  8  end;

  9  /

 

 

SQL> select * from t;

 

A

----------

abc

123

cde

456122

efd4554

 

SQL> select * from t where Isnumber(a) = 1;

 

A

----------

123

456122

 

方法二:select * from table_a a where substr(a.a ,1,1) >'A'

改成小于号,适合要么全数字要么全字母的列

 

方法三:translate(string,'x1234567890','x') is null

例子:

select a.name from  t_ecms_userinfo  a where translate(a.name,'x1234567890','x') is not null

 

 

方法五:

利用 to_number
CREATE OR REPLACE FUNCTION isnumeric(str IN VARCHAR2) RETURN NUMBER IS

  v_str FLOAT;

BEGIN

  IF str IS NULL THEN

    RETURN 0;

  ELSE

    BEGIN

      SELECT TO_NUMBER(str) INTO v_str FROM DUAL;

    EXCEPTION

      WHEN INVALID_NUMBER THEN

        RETURN 0;

    END;

 

    RETURN 1;

  END IF;

/

方法六

CREATE OR REPLACE FUNCTION isnumeric(str IN VARCHAR2) RETURN NUMBER IS

  v_str VARCHAR2(1000);

BEGIN

  IF str IS NULL THEN

    RETURN 0;

  ELSE

    v_str := TRANSLATE(str, '.0123456789', '.');

 

    IF v_str = '.' OR v_str = '+.' OR v_str = '-.' OR v_str IS NULL THEN

      RETURN 1;

    ELSE

      RETURN 0;

    END IF;

  END IF;

END isnumeric;

/

 

 

方法七: oracle 10G以上版本才能使用正则表达式

利用 regexp_like
CREATE OR REPLACE FUNCTION isnumeric(str IN VARCHAR2) RETURN NUMBER IS

BEGIN

  IF str IS NULL THEN

    RETURN 0;

  ELSE

    IF regexp_like(str, '^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)$') THEN

      RETURN 1;

    ELSE

      RETURN 0;

    END IF;

  END IF;

END isnumeric;

/

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有