Как Oracle TO_NUMBER () определяет тип возвращаемого NUMBER? - PullRequest
0 голосов
/ 28 февраля 2020

В настоящее время я изучаю функции Oracle, и одна вещь, которая несколько озадачила меня, заключается в том, как Oracle определяет тип возвращаемых данных TO_NUMBER ().

TO_NUMBER () принимает три параметра два из которых являются необязательными. Первый параметр - это строка ввода, второй - строка формата, а третий - строка локали NLS.

Выходные данные TO_NUMBER () - это тип данных NUMBER, а Oracle имеет большое число NUMBER типы данных, включая FLOAT, DE C, INTEGER, INT, REAL и др. c.

Мой вопрос: как TO_NUMBER () определяет, какой конкретный c цифра c тип данных для возврата ? Это определяется первым необязательным параметром, форматной строкой?

1 Ответ

1 голос
/ 28 февраля 2020

Как указал @mathguy, TO_NUMBER всегда возвращает NUMBER. Вы можете проверить это самостоятельно с помощью функции DUMP. Он вернет тип данных и внутреннее представление данных, например,

SQL> select dump(to_number('1')) from dual;

DUMP(TO_NUMBER('1'
------------------
Typ=2 Len=2: 193,2

SQL> select dump(to_number('1.123')) from dual;

DUMP(TO_NUMBER('1.123'))
------------------------
Typ=2 Len=4: 193,2,13,31

Даже число с плавающей точкой при передаче в TO_NUMBER станет NUMBER

SQL> select dump(to_number(1.0e+3f)) from dual;

DUMP(TO_NUMBER(1.0E
-------------------
Typ=2 Len=2: 194,11
...