如何判断一个字符串是否为数字或日期?

文章作者 100test 发表时间 2007:03:14 14:03:34
来源 100Test.Com百考试题网


昨天有一个朋友在MSN上问,如何判断一个字符串是否为数字?
我说,写一个函数吧。于是给出了一个例子:

SQL> CREATE OR REPLACE FUNCTION is_number (parmin VARCHAR2)
2 RETURN NUMBER
3 IS
4 val NUMBER.
5 BEGIN
6 val := TO_NUMBER (NVL (parmin, a)).
7 RETURN 1.
8 EXCEPTION
9 WHEN OTHERS
10 THEN
11 RETURN 0.
12 END.
13 /
Function created.
SQL> 0select is_number(a) from dual.
IS_NUMBER(A)
--------------
0
SQL> 0select is_number(0.998) from dual.
IS_NUMBER(0.998)
------------------
1
SQL> 0select is_number(9999999999999999) from dual.
IS_NUMBER(9999999999999999)
-----------------------------
1
今天,这个朋友在MSN上又问:如何判断一个字符是否是日期?
我说,再写一个函数吧。
补注:由于session的语言设置会影响日期的输出格式,所以时间被转换为字符可能有多种形式。
以下这个函数只能满足部分情况,仅供参考。
SQL> CREATE OR REPLACE FUNCTION is_date (parmin VARCHAR2)
2 RETURN NUMBER
3 IS
4 val DATE.
5 BEGIN
6 val := TO_DATE (NVL (parmin, a), yyyy-mm-dd hh24:mi:ss).
7 RETURN 1.
8 EXCEPTION
9 WHEN OTHERS
10 THEN
11 RETURN 0.
12 END.
13 /

Function created.

SQL> 0select is_date(a) from dual.
IS_DATE(A)
------------
0
SQL> 0select is_date(2004-05-05) from dual.
IS_DATE(2004-05-05)
---------------------
1
SQL> 0select is_date(2004/01/01) from dual.
IS_DATE(2004/01/01)
---------------------
1
SQL> 0select is_date(01/01/04) from dual.
IS_DATE(01/01/04)
-------------------
1
SQL> 0select is_date(01-jan-04) from dual.
IS_DATE(01-JAN-04)
--------------------
1

这两者是何其相似啊!

相关文章


案例学习Oracle错误:ORA-00904[2]
Oracle使用新List分割方法提高灵活性
Oracle数据库最大可用性体系结构
SQLServer到Oracle连接服务器的实现
如何判断一个字符串是否为数字或日期?
Oracle容灾复制解决方案SharePlex
有关Oracle中虚拟专用数据库的探讨
Oracle数据库中物化视图的原理剖析
Oracle10g数据库最佳新特性:等待界面
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛