оракул обрезает значение после сохранения идентификатора с точностью? - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть стол.в нем есть столбец с типом данных NUMBER (38,20) .это столбец идентификатора.приложение генерирует идентификатор.я пытаюсь вставить запись со значением идентификатора 105.00010.но он вставляет только 105.0001.Могу ли я узнать причину, по которой оно усекает одно значение (0).он вставляет записи с 105.00001 по 105.00009.при вставке 105.00010 он усекается.Пожалуйста, помогите мне.

Размер столбца **NUMBER(38,20)**

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

См. Следующий контрольный пример:

WITH data_values
  AS (SELECT 105.0001 AS test_val FROM dual
      UNION ALL
      SELECT 105.00010 AS test_val FROM dual)
SELECT test_val,
       TO_NUMBER(test_val, '999.99999') AS NUM,
       TO_CHAR(test_val, '999.99999') AS STR
  FROM data_values;

Результат:

TEST_VAL NUM      STR
105.0001 105.0001 105.00010
105.0001 105.0001 105.00010

Значение после последней ненулевой цифры не относится к Oracle.Оба ваших числа эквивалентны.

2 голосов
/ 20 декабря 2011

Крайние правые нули после десятичной дроби незначительны, поэтому значение не усекается, оно остается тем же значением.

Если вам нужно, чтобы он оставался прежним, вам, возможно, придется рассматривать значение как varchar2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...