自定义函数 判断oracle指定字段的值是否是数值类型
2013-08-20 09:29
183 查看
http://hi.baidu.com/yljf1314/item/59c27962e3f9262669105b89
Oracle PL/SQL并没有提供一个判断值是否为数字的函数,所以我们在实际中遇到以下的问题时,
常常会很郁闷。
例如有一个表,
SQL> desc userlogin
名称 是否为空? 类型
----------------------------------------- -------- ----------------------
NAME VARCHAR2(20)
PSW VARCHAR2(20)
SQL> select * from userlogin;
NAME PSW
-------------------- --------------------
张三 123456
李四 abcdefg
钱五 abc123
想把psw为纯数字的记录找出来,就很麻烦。
为了解决这个问题,我们先建一个函数,
CREATE OR REPLACE FUNCTION ISNUMBER(MyStr VARCHAR2) RETURN NUMBER
IS
STR VARCHAR2(400);
ISNUM NUMBER;
NUM NUMBER;
BEGIN
--返回0,不是数字。1,是数字
ISNUM:=0;
STR:=TRIM(MyStr);
--如果输入值为空,就返回不是数字。
IF TRIM(STR) IS NOT NULL THEN
BEGIN
NUM:=TO_NUMBER(STR);
ISNUM:=1;
EXCEPTION
WHEN INVALID_NUMBER THEN
NULL;
WHEN OTHERS THEN
NULL;
END;
END IF;
RETURN ISNUM;
END;
例如1::(查询指定字段是数值类型数据的信息)
SQL> select * from userlogin where isnumber(psw)=1;
NAME PSW
-------------------- --------------------
张三 123456
例如2::(查询指定字段不是数值类型数据的信息)
SQL> select * from userlogin where isnumber(psw)=0;
NAME PSW
-------------------- --------------------
李武 1233c2f
#oracle数据库
Oracle PL/SQL并没有提供一个判断值是否为数字的函数,所以我们在实际中遇到以下的问题时,
常常会很郁闷。
例如有一个表,
SQL> desc userlogin
名称 是否为空? 类型
----------------------------------------- -------- ----------------------
NAME VARCHAR2(20)
PSW VARCHAR2(20)
SQL> select * from userlogin;
NAME PSW
-------------------- --------------------
张三 123456
李四 abcdefg
钱五 abc123
想把psw为纯数字的记录找出来,就很麻烦。
为了解决这个问题,我们先建一个函数,
CREATE OR REPLACE FUNCTION ISNUMBER(MyStr VARCHAR2) RETURN NUMBER
IS
STR VARCHAR2(400);
ISNUM NUMBER;
NUM NUMBER;
BEGIN
--返回0,不是数字。1,是数字
ISNUM:=0;
STR:=TRIM(MyStr);
--如果输入值为空,就返回不是数字。
IF TRIM(STR) IS NOT NULL THEN
BEGIN
NUM:=TO_NUMBER(STR);
ISNUM:=1;
EXCEPTION
WHEN INVALID_NUMBER THEN
NULL;
WHEN OTHERS THEN
NULL;
END;
END IF;
RETURN ISNUM;
END;
例如1::(查询指定字段是数值类型数据的信息)
SQL> select * from userlogin where isnumber(psw)=1;
NAME PSW
-------------------- --------------------
张三 123456
例如2::(查询指定字段不是数值类型数据的信息)
SQL> select * from userlogin where isnumber(psw)=0;
NAME PSW
-------------------- --------------------
李武 1233c2f
#oracle数据库
相关文章推荐
- ORACLE里怎么能判断一个日期类型的字段是否为空,解决方法:is null
- [c++] 判断类下是否有某个指定类型及名称的字段
- oracle 存储过程 判断字段中是否包含指定的字符
- oracle 空字符串 null 和各种判断当前字段是否为空
- Oracle删除字段之前判断字段是否存在
- oracle 10g 用正则表达式判断字段的值是否为数字
- Oracle查询表中指定字段的数据是否含有某个字符
- 判断Oracle字段中是否存在中文《asciistr函数》
- ORACLE写一函数,准确地判断字段是否含有汉字或者提取汉字等
- oracle 数据库判断指定表中是否有指定列
- oracle 添加字段时判断字段是否已经存在
- Oracle判断指定列是否全部为数字
- oracle字符串载取及判断是否包含指定字符串
- Net判断一个对象是否为数值类型 z
- Oracle 中如何判断时间类型Date是否为空
- matlab自学经验成果分享 判断变量是否为指定类型
- js正则表达式判断一个字符串是否是正确的有数字和小数点组成的金钱形式和 判读数值类型的正则表达式
- Python3基础 isinstance()判断变量是否为指定类型
- c++,二维数组中的数值代表金币数,从左上角出发,只能向下或者向右移动,判断是否存在获取指定金币数值N的路径
- Sql Server、Oracle以及Access数据库 判断字段是否为空的办法