oracle 12c 翻页,Oracle 12c中的转换功能增强

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值