функция to_number в sql - PullRequest
       1

функция to_number в sql

0 голосов
/ 29 ноября 2011

Я не мог понять, почему следующий код SQL>

Select to_number('1234.64', '9999.9') from Dual;

возвращает это число 1234.6? Это что-то вроде округления, усечения или? Пожалуйста, помогите мне разобраться в этом коде, я знаю функции to_number, у меня естьмного раз использовал этот код для простых символов, но здесь ничего не понятно

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Это очень похоже на Oracle, но я подозреваю, что результат будет похож на любой SQL, который использовал to_number.

Функция to_number принимает два аргумента: строку, которую нужно преобразовать в число,строка формата для преобразования.

В этом примере «12345.64» - это строка для преобразования, а «9999.9» - строка формата.В этой строке формата 9 означает цифру, а a.обозначает десятичную точку.

Таким образом, функция запрашивает преобразование строки '12345.64' в число длиной до 4 цифр справа от десятичной точки и только 1 цифра после десятичной точки.

Второй аргумент не обязателен - в нормальных условиях я бы его пропустил.

0 голосов
/ 29 ноября 2011

Вы должны использовать

SELECT to_number('1234.64', '9999.99') from Dual;

Ваша маска говорит двигателю, что вам нужен только один десятичный знак, поэтому число округляется.
Если вы хотите получить точное число, не указывайте маску:

SELECT to_number('1234.64') from Dual;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...