假设test表中存在name字段
CREATE OR REPLACE FUNCTION ISNUMERIC1(MyStr VARCHAR2) RETURN NUMBER
IS
STR VARCHAR2(400);
ISNUM NUMBER;
NUM NUMBER;
BEGIN
ISNUM:=0;
STR:=TRIM(MyStr);
IF TRIM(STR) IS NULL THEN
return ISNUM;
END IF;
BEGIN
NUM:=TO_NUMBER(STR);
ISNUM:=1;
EXCEPTION
WHEN INVALID_NUMBER THEN
NULL;
WHEN OTHERS THEN
NULL;
END;
return ISNUM;
END;
-------------第二种方式通过判断列数据长度,相同则返回true即表示全为数字,false则表示存在非数字。建议百度了解
translate函数作用即可理解本sql。语句如下
select * from test where length(translate(name,'-.0123456789'||name,'-.0123456789'))=length(name)

本文介绍了一种使用PL/SQL函数ISNUMERIC1来验证字符串是否全为数字的方法,并提供了一个利用translate函数进行数字验证的SQL示例。
1229

被折叠的 条评论
为什么被折叠?



