测试数据库版本: 8.1.6 测试操作系统:windows2000 server --第一种方法 通过to_number转换是否发生异常来判断 SQL> create or replace function f_str_or_num(str varchar2) return varchar2 is 2 v_num number; 3 v_return varchar2(60); 4 begin 5 v_num:=to_number(str); 6 v_return:=str||' is a number string!'; 7 return v_return; 8 exception when others then 9 v_return:=str||' is not a number string!'; 10 return v_return; 11 end f_str_or_num; 12 / Function created. SQL> select f_str_or_num('123.56') from dual; F_STR_OR_NUM('123.56') -------------------------------------------------------------------------------- 123.56 is a number string! SQL> select f_str_or_num('12aa.56') from dual; F_STR_OR_NUM('12AA.56') -------------------------------------------------------------------------------- 12aa.56 is not a number string! SQL> --第二种通过translate函数来以及其他相关函数来实现 SQL> select decode(replace(translate('12a3.456','0123456789.',' '),' ',''),null, 2 'is number','is not a number') from dual;DECODE(REPLACE( --------------- is not a numberSQL> select decode(replace(translate('123.456','0123456789.',' '),' ',''),null, 2 'is number','is not a number') from dual;DECODE(RE --------- is number SQL>
我的用法是: 第一个用法: 在表A中,我要随机生成一个ID号,与表中原来的ID号不能重复. 字段 ID 为数字,存为VARCHAR2型.为主键. 第二个用法: 在表T中,生成一个ID号,生成方式为:查找表T中的最大ID号,加1存为新的ID号. 字段 ID 为数字,存为VARCHAR2型.为主键.我再加点分
8.1.6 测试操作系统:windows2000 server
--第一种方法 通过to_number转换是否发生异常来判断
SQL> create or replace function f_str_or_num(str varchar2) return varchar2 is
2 v_num number;
3 v_return varchar2(60);
4 begin
5 v_num:=to_number(str);
6 v_return:=str||' is a number string!';
7 return v_return;
8 exception when others then
9 v_return:=str||' is not a number string!';
10 return v_return;
11 end f_str_or_num;
12 /
Function created.
SQL> select f_str_or_num('123.56') from dual;
F_STR_OR_NUM('123.56')
--------------------------------------------------------------------------------
123.56 is a number string!
SQL> select f_str_or_num('12aa.56') from dual;
F_STR_OR_NUM('12AA.56')
--------------------------------------------------------------------------------
12aa.56 is not a number string!
SQL>
--第二种通过translate函数来以及其他相关函数来实现
SQL> select decode(replace(translate('12a3.456','0123456789.',' '),' ',''),null, 2 'is number','is not a number') from dual;DECODE(REPLACE( ---------------
is not a numberSQL> select decode(replace(translate('123.456','0123456789.',' '),' ',''),null, 2 'is number','is not a number') from dual;DECODE(RE
---------
is number SQL>
第一个用法: 在表A中,我要随机生成一个ID号,与表中原来的ID号不能重复.
字段 ID 为数字,存为VARCHAR2型.为主键. 第二个用法: 在表T中,生成一个ID号,生成方式为:查找表T中的最大ID号,加1存为新的ID号.
字段 ID 为数字,存为VARCHAR2型.为主键.我再加点分