Теперь я отвечу на свой вопрос.При использовании функции TO_NUMBER
я упустил важный момент: все, что я получу от функции TO_NUMBER
, будет числом.И число не включает в себя ничего, кроме десятичной точки и E научных обозначений.Таким образом, 17 788,99 на самом деле не число, а строковое представление 17788,99.
Если мы попытаемся вычесть 500 из 17 788,99, мы потерпим неудачу (ну, Oracle неявно преобразует числовые строки в числа и наоборот, но в основном мы не можем выполнять арифметические операции между строками и числами).Я уверен, что функция TO_NUMBER
почти никогда не используется для выбора значения столбца.Скорее, он используется для выполнения арифметических операций.Вместо этого мы используем TO_CHAR
, чтобы показать значение столбца или любое числовое выражение в аккуратном, удобном для чтения формате.Модели fomat и nls_params предназначены не только для функции TO_NUMBER
, но и для TO_CHAR
.