Как сохранить тип данных и десятичные дроби после приведения - Oracle - PullRequest
0 голосов
/ 03 апреля 2020

Это, должно быть, глупый вопрос, но я не могу найти правильный способ справиться с приведенным ниже сценарием.
Моя цель - взять число в столбце varchar и привести его к десятичному числу. Тем не менее, я также должен убедиться, что десятичные разряды остаются нетронутыми. Как мне добиться этого и убедиться, что тип данных останется DECIMAL (13,3).

 select TO_CHAR(CAST(11.0001 AS DECIMAL(13,3)) ,9999999999.999) from dual;  -- O/p : 11.000; Datatype : VARCHAR2

 select TO_CHAR(CAST(0.0001 AS DECIMAL(13,3)) ,9999999999.999) from dual; -- O/p : .000; Datatype : VARCHAR2

 select CAST(11.0001 AS DECIMAL(13,3)) from dual; -- O/p : 11; Datatype : DECIMAL(13,3)

 select CAST(0.0001 AS DECIMAL(13,3)) from dual; -- O/p : 0; Datatype : DECIMAL(13,3)

В качестве выходных данных я буду искать:

Input : 11.0001  VARCHAR(40)  Output : 11.000 DECIMAL(13,3)
Input : 0.0001 VARCHAR(10)    Output : 0.000 DECIMAL(13,3)
Input : 18     VARCHAR(40)    Output : 18    DECIMAL(13,3)

Любой Помощь будет оценена.

Спасибо

1 Ответ

1 голос
/ 03 апреля 2020

Не думаю, что вы задаете правильный вопрос. Числа не имеют десятичных разрядов. 18 - это то же самое, что 18.0 - это то же самое, что и 18.00. Вы можете отформатировать число, которое дает вам строку , отформатированную требуемым образом, с любым количеством цифр, которое вы хотите.

Если вы берете эти VARCHAR2 и конвертируете их в Числа, но хотите знать, как они были ранее отображены, то вы теряете информацию. Почему вам нужно преобразовать их в десятичные числа в первую очередь? Вы просто пытаетесь взять вещи с точностью до 4 цифр и убрать что-нибудь после 3-го ди git?

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