原文地址:https://oracle-base.com/articles/12c/conversion-function-enhancements-12cr2
Conversion Function Enhancements in Oracle Database 12c Release 2 (12.2)
Oracle Database 12c Release 2(12.2)对数据类型转换功能进行了许多增强,使处理转换错误变得更加容易。
配置
本文中的示例使用了下表。
CREATE TABLE t1 (
data VARCHAR2(20)
);
INSERT INTO t1 VALUES ('11111');
INSERT INTO t1 VALUES ('01-JAN-2016');
INSERT INTO t1 VALUES ('AAAAA');
COMMIT;
复制
CAST和TO_*转换函数
在以前的数据库版本中,数据类型转换期间的失败导致错误。
SELECT TO_NUMBER(data)
FROM t1;
ERROR:
ORA-01722: invalid number
no rows selected
SQL>
复制
在Oracle数据库12.2中,CAST函数和几个TO_*函数被修改为包含错误处理功能,允许它们在发生转换错误时返回默认值。
SELECT TO_NUMBER(data DEFAULT -1 ON CONVERSION ERROR)
FROM t1;
*
TO_NUMBER(DATADEFAULT-1ONCONVERSIONERROR)
-----------------------------------------
11111
-1
-1
SQL>
SELECT TO_DATE(data DEFAULT '01-JAN-2000' ON CONVERSION ERROR, 'DD-MON-YYYY' )
FROM t1;
TO_DATE(D
---------
01-JAN-00
01-JAN-16
01-JAN-00
SQL>
SELECT CAST(data AS TIMESTAMP DEFAULT NULL ON CONVERSION ERROR, 'DD-MON-YYYY')
FROM t1;
CAST(DATAASTIMESTAMPDEFAULTNULLONCONVERSIONERROR,'DD-MON-YYYY')
---------------------------------------------------------------------------
01-JAN-16 12.00.00.000000000 AM
SQL>
复制
VALIDATE_CONVERSION函数
VALIDATE_CONVERSION函数用于测试转换是否成功,从而可以排除在操作期间可能导致问题的数据。如果转换成功,则函数返回值“1”,如果转换失败,则返回值“0”。
SELECT data
FROM t1
WHERE VALIDATE_CONVERSION(data AS NUMBER) = 1;
DATA
--------------------
11111
SQL>
SELECT data
FROM t1
WHERE VALIDATE_CONVERSION(data AS DATE, 'DD-MON-YYYY') = 1;
DATA
--------------------
01-JAN-2016
SQL>
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1806次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
852次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
592次阅读
2025-04-10 15:35:48
Oracle DataGuard高可用性解决方案详解
孙莹
578次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
537次阅读
2025-04-15 17:24:06
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
493次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
477次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
455次阅读
2025-04-14 09:40:20
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
440次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
433次阅读
2025-04-08 09:12:48