Числовые значения не имеют внутреннего формата, поэтому ваш клиент сам решает, как их отобразить.Я не уверен, какой клиент выдает значения 'DB', но значения SQL * Plus равны , используя его значения по умолчанию :
SQL * Plus обычно отображает числа со знакоммного цифр, которые требуются для точности, вплоть до стандартной ширины экрана, определяемой значением переменной NUMWIDTH
команды SET
(обычно 10).Если число больше значения SET NUMWIDTH
, SQL * Plus округляет число в большую или меньшую сторону до максимально допустимого количества символов, если это возможно, или отображает хэши, если число слишком велико.
Итак, вы видите:
with your_table (x, y) as (
select -0.0224231886, -0.021470109 from dual
union all select -0.037164512, -0.0238026527 from dual
union all select 0.021786217, 0.044550243 from dual
union all select 0.0772262609, 0.0724136521 from dual
union all select 0.968632046, 0.0866250777 from dual
)
select x, y from your_table;
X, Y
-.02242319,-.02147011
-.03716451,-.02380265
.021786217,.044550243
.077226261,.072413652
.968632046,.086625078
Вы можете изменить значение по умолчанию для вашего сеанса с помощью `set numf [ormat] ', используя модель формата с достаточным количеством цифр до и после десятичной точкичтобы представить любое число, которое вы могли сохранить, например:
set numformat 990.99999999999
, тогда тот же запрос получает
X, Y
-0.0224231886, -0.0214701090
-0.0371645120, -0.0238026527
0.0217862170, 0.0445502430
0.0772262609, 0.0724136521
0.9686320460, 0.0866250777
Или вы можете неявно изменить его, используя set numw[idth]
:
set numf ""
set numwidth 20
X, Y
-.0224231886, -.021470109
-.037164512, -.0238026527
.021786217, .044550243
.0772262609, .0724136521
.968632046, .0866250777
, который дает вам необходимую точность, но не показывает ведущий ноль.Если это не имеет значения, тогда этот подход проще.