NUMBER автоматически конвертируется в DECFLOAT - PullRequest
0 голосов
/ 25 июня 2019

Я новичок в DB2. Я пытаюсь выполнить запрос на изменение существующей таблицы.

Предположим, что таблица EMP уже существует в БД, которые имеют столбцы ниже

id int name varchar(50)

Теперь я пытаюсь добавить новый столбец Зарплата, для которого я запускаю запрос ниже.

ALTER TABLE EMP ADD SALARY NUMBER

Вышеуказанный запрос успешно выполнен. После этого я описал таблицу EMP, которая дала мне следующий результат:

ID INTEGER NAME VARCHAR SALARY DECFLOAT

Поскольку я пытаюсь добавить столбец с типом данных NUMBER, я не знаю, как NUMBER преобразуется в DECFLOAT.

Будет полезно, если кто-нибудь сможет это объяснить.

Подробности версии Db2:

Service_Level: DB2 v11.1.2.2

Fixpack_num : 2

1 Ответ

3 голосов
/ 25 июня 2019

Для Db2 для Linux / Unix / Windows, с включенным типом данных NUMBER (по умолчанию это не так), это задокументированное поведение .

В частности

Эффект от установки параметра конфигурации базы данных number_compat в положение ON заключается в следующем.Когда тип данных NUMBER явно встречается в операторах SQL, тип данных неявно отображается следующим образом:

If you specify NUMBER without precision and scale attributes, it is mapped to DECFLOAT(16).
If you specify NUMBER(p), it is mapped to DECIMAL(p).
If you specify NUMBER(p,s), it is mapped to DECIMAL(p,s).
...