Преобразовать строку в десятичную в pl sql - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу преобразовать строку в число с одним десятичным знаком.Пример:

  • 4 после преобразования -> 4,0
  • 4,1 после преобразования -> 4,1
  • 04,1 после преобразования -> 4,1
  • 04,0 после преобразования-> 4.0

Я пытался

SELECT TO_NUMBER ('04 .0 ',' 99.99 ') FROM dual;

Но это не преобразует строку в десятичнуючисло.вместо этого он преобразуется в целое число (4).

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Но это не преобразует строку в десятичное число.вместо этого он конвертируется в целое число (4).

Не совсем.Формат отображаемого числа зависит только от клиента (SQL * plus / SQL Developer и т. Д.) И не имеет никакого отношения к тому, как Oracle хранит ваши числа внутри системы, что зависит от точности, указанной вами для этого столбца.

InЧтобы увидеть числа в нужном формате независимо от клиента, и, если десятичный разделитель вашей территории равен '.' (NLS_NUMERIC_CHARACTERS равен '.,'), вы можете просто использовать TO_CHAR

SELECT TO_CHAR('04.0','0D9') FROM dual;
4.0
0 голосов
/ 15 февраля 2019

Объявляйте число переменное следующим образом

number(4,1);

Пример:

declare
  pizza   number(4,1);
begin
  pizza := 4.1; 
  DBMS_OUTPUT.put_line(TO_CHAR(pizza,'0D9'));
end;
0 голосов
/ 13 февраля 2019

вы можете попробовать TO_CHAR

SELECT TO_CHAR ('04 .0 ',' 99.9 ') ОТ двойного;

...