1)在Oracle中,我可以将TO_CHAR的结果存储到VARCHAR2,NVARCHAR2吗? 根据下面的代码,似乎是。
CREATE TABLE TBL (
R1 VARCHAR2(15),
R2 NVARCHAR2(15),
R3 NVARCHAR2(15)
);
INSERT INTO TBL(R1, R2) VALUES (TO_CHAR(15,'999.999'),TO_CHAR(20,'999.999'));
SELECT R1+10, R2+20 FROM TBL;
2)将10添加到存储TO_CHAR结果的VARCHAR2,NVARCHAR2列中,如上所述。我可以知道为什么不需要TO_NUMBER(R1),TO_NUMBER(R2)吗?
答案 0 :(得分:3)
是的,因为TO_CHAR(number)
返回VARCHAR2
类型,并且
因为Oracle隐式将数据从VARCHAR2
转换为NVARCHAR2
,或从VARCHAR2/ NVARCHAR2
转换为NUMBER
当这种转换有意义时,Oracle数据库会自动将值从一种数据类型转换为另一种数据类型。
您可以参考docs来了解Oracle隐式转换的矩阵。