oracle怎么判断数字 oracle查询不是数字

oracle 中怎么判断是否为数字?

CREATE OR REPLACE Function Isnumeric(Str In Varchar2)\x0d\x0a\x0d\x0a Return Number\x0d\x0a\x0d\x0a Is\x0d\x0a\x0d\x0aBegin\x0d\x0a\x0d\x0a If Str Is Null\x0d\x0a \x0d\x0a Then\x0d\x0a \x0d\x0a Return 0;\x0d\x0a \x0d\x0a Else\x0d\x0a \x0d\x0a If Regexp_Like(Str, '^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)$') --数值\x0d\x0a \x0d\x0a /*(str, '^[0-9]*[1-9][0-9]*$') --正整数*/\x0d\x0a \x0d\x0a Then\x0d\x0a \x0d\x0a Return 1;\x0d\x0a \x0d\x0a Else\x0d\x0a \x0d\x0a Return 0;\x0d\x0a \x0d\x0a End If;\x0d\x0a \x0d\x0a End If;\x0d\x0a\x0d\x0aEnd Isnumeric;\x0d\x0a\x0d\x0a创建上面的函数,然后判断返回值是否是1,1则表示是数值,0则表示非数值

创新互联公司是专业的上高网站建设公司,上高接单;提供成都做网站、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行上高网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

oracle sql判断是否数字?

可以用oracle自带的正则表达式函数REGEXP_REPLACE把数字全部取出来,然后计算数字的长度是否等于这个字段的长度,如果等于的话说明这个值全部是数字,如果不等于的话说明值里面包含非数字,测试语句如下:

SELECT(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL;---取出值里面的全部数字

SELECT LENGTH('LSS12345'),LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL; ---查询出字段的长度和字段内数字的长度

SELECT* FROM DUAL  WHERE LENGTH('LSS12345') = LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) ;  ----查询这个字段所有的纯数字列

oracle判断字符串是否为数字

1、通过ASCII码判断是否数字,介于[48, 57]之间,(ascii('0') = 48, ascii('9') = '57')

2、调用cast函数尝试强制转换成NUMERIC或NUMBER,不是合法数字串即抛异常

3、调用translate函数,剔除所有[0-9]数字后,看是否为空串

4、调用正则表达式,进行模式匹配(10g版本新加入的功能)

--通过ASCII码判断是否数字,介于[48, 57]之间,(ascii('0') = 48, ascii('9') = '57')

DECLARE

str             VARCHAR2(10) := '123a';

val             NUMERIC(10);

i               int;

k               int;

flag            BOOLEAN;

BEGIN

flag := TRUE;

for i in 1..10 loop   --新密码是否6位数字

k := ascii(substr(str, i, 1));

if k  48 or k  57 THEN

flag := FALSE;

end if;

end LOOP;

IF flag = true THEN

dbms_output.put_line(str || '是[0-9]的数字序列');

ELSE

dbms_output.put_line(str || '不是[0-9]的数字序列');

END IF;

END;

-- 调用cast函数尝试强制转换成NUMERIC或NUMBER,不是合法数字串即抛异常

DECLARE

str    VARCHAR2(10) := '123';

val    NUMERIC(10);

BEGIN

val := CAST(str AS NUMERIC);

dbms_output.put_line(str || '是[0-9]的数字序列');

EXCEPTION

WHEN value_error THEN -- 字符串转实数错误

--dbms_output.put_line(SQLCODE || ', ' || SQLERRM);

dbms_output.put_line(str || '不是[0-9]的数字序列');

END;

--调用translate函数,剔除所有[0-9]数字后,看是否为空串

DECLARE

str VARCHAR2(10) := '123abc';

BEGIN

IF replace(translate(str, '0123456789', '0'), '0', '') IS NULL THEN

dbms_output.put_line(str || '是[0-9]的数字序列');

ELSE

dbms_output.put_line(str || '不是[0-9]的数字序列');

END IF;

END;

--调用正则表达式,进行模式匹配(10g版本新加入的功能)

SELECT *

FROM dual

WHERE regexp_like('1234', '^[[:digit:]]+$');

--从任意字符串中提取数字串(调用2次translate函数)。

--假定初始串为str。首先将str中数字全部替换为空格,输出记为str2;

--其次,对每个在str中出现的任意str2串中字符,如果是str2的首字符则替换为空格,其它字符则全部剔除

DECLARE

--str    VARCHAR2(100) := ' 护照01浙江2     3昆 山4苏 3';

str    VARCHAR2(100) := ' 护照浙江     昆 山苏 4';

ret    VARCHAR2(10);

BEGIN

ret := TRIM(TRANSLATE(str, trim(TRANSLATE(str, '1234567890', '          ')), ' '));

dbms_output.put_line(ret);

END;


本文标题:oracle怎么判断数字 oracle查询不是数字
分享链接:http://pwwzsj.com/article/hgscdd.html