Причина - числовой формат по умолчанию в sql plus. в базе данных у вас есть значение 280.10000000000002
, а не 280.1
вот пример
SQL> select 128.000000000000000000006 as test from dual;
test
-------------------------
128
SQL> select 128.200000000000000000006 as test from dual;
test
-------------------------
128,2
вы можете изменить формат номера и проверить еще раз
SQL> SET NUMF 999999999.99999999999999999999999999999999
SQL> select 128.200000000000000000006 as test from dual;
test
-------------------------------------------
128.20000000000000000000600000000000
SQL>
Обновление: Это явление можно объяснить тем фактом, что ваш тип данных определяется только как число, без точного указания точности. Это означает, что вы можете сохранить десятичное число, но не дать точную спецификацию десятичных разрядов.
Вот пример, который показывает различия.
CREATE TABLE test_num(
n1 NUMBER,
n2 NUMBER(23,15));
INSERT INTO test_num VALUES(208.20000000000006,208.20000000000006);
SELECT t.*FROM test_num t;
Resut в PLSQL / Разработчик:
N N2
--- ---
208,2 208,200000000000030
в pl sql Разработчик вы можете отображать числа в виде символов. Если вы хотите, чтобы активировать флажок в настройках: Tools -> Preferences -> SQL Window -> Number fields to_char
в вашем случае, я бы округлил числовое значение до определенного количества десятичных знаков при вставке / обновлении или изменил бы ваш тип данных с number
до number(p, s)
(где p - точность, а s - масштаб.)