Присвоение результата TO_CHAR VARCHAR2, NVARCHAR2 - PullRequest
1 голос
/ 20 мая 2019

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 к столбцу VARCHAR2, NVARCHAR2, в котором хранятся результаты TO_CHAR, работает, как описано выше.Могу ли я знать, почему TO_NUMBER (R1), TO_NUMBER (R2) не нужны?

1 Ответ

3 голосов
/ 20 мая 2019
  1. Да, потому что TO_CHAR(number) возвращает VARCHAR2 тип и

  2. Поскольку Oracle неявно преобразует ваши данные из VARCHAR2 в NVARCHAR2, илииз VARCHAR2/ NVARCHAR2 в NUMBER

База данных Oracle автоматически преобразует значение из одного типа данных в другой, когда такое преобразование имеет смысл.

Вы можете обратиться к документам для матрицы неявных преобразований Oracle.

...