问题描述
我有一个表,里面有有效数据和无效数据
例如,数据类型为varchar 2
日期
1
2
1/12/15
21/11/14
20/1/14
11/12/2015
21/12/2011
我希望输出为
空的
空的
01/12/2015
20/01/2014
.
.
21/12/2011
请帮我问一个问题
例如,数据类型为varchar 2
日期
1
2
1/12/15
21/11/14
20/1/14
11/12/2015
21/12/2011
我希望输出为
空的
空的
01/12/2015
20/01/2014
.
.
21/12/2011
请帮我问一个问题
专家解答
SQL> create or replace
2 function date_convert(p_str varchar2) return date is
3 x date;
4 begin
5 x := to_date(p_str,'dd/mm/yyyy');
6 return x;
7 exception
8 when others then return null;
9 end;
10 /
Function created.
SQL>
SQL>
SQL> drop table t1 purge;
Table dropped.
SQL>
SQL> create table t1 ( str varchar2(20));
Table created.
SQL>
SQL> insert into t1 values ('1');
1 row created.
SQL> insert into t1 values ('2');
1 row created.
SQL> insert into t1 values ('10/10/2014');
1 row created.
SQL> insert into t1 values ('10/12/2014');
1 row created.
SQL> insert into t1 values ('10/99/2014');
1 row created.
SQL>
SQL> select date_convert(str) from t1;
DATE_CONVERT(STR)
-------------------
10/10/2014 00:00:00
10/12/2014 00:00:00
如果您有数百万行要检查,那么只在必要时调用该函数可能会获得性能优势,例如
SQL> select 2 case 3 when length(str) between 8 and 12 4 and str like '%/%/%' then date_convert(str) 5 end dte 6 from t1; DTE ------------------- 10/10/2014 00:00:00 10/12/2014 00:00:00
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




