将TO_CHAR结果分配给VARCHAR2,NVARCHAR2

时间:2019-05-20 08:26:26

标签: sql oracle to-char varchar2

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)吗?

1 个答案:

答案 0 :(得分:3)

  1. 是的,因为TO_CHAR(number)返回VARCHAR2类型,并且

  2. 因为Oracle隐式将数据从VARCHAR2转换为NVARCHAR2,或从VARCHAR2/ NVARCHAR2转换为NUMBER

  

当这种转换有意义时,Oracle数据库会自动将值从一种数据类型转换为另一种数据类型。

您可以参考docs来了解Oracle隐式转换的矩阵。