Тип данных DECIMAL

Тип данных DECIMAL

Формат типа данных DECIMAL:

DECIMAL(Р, S)

Как и в случае NUMERIC, DECIMAL(4,2) определяет число, состоящее, по меньшей мере, из четырех цифр, включая две цифры справа от десятичной точки. Тем не менее, поскольку Firebird сохраняет данные DECIMAL с точностью 4 и меньше как INTEGER, этот тип может в столбце DECIMAL(4,1) потенциально хранить число от 214 748 364 до -214 748 364.8 без появления ошибки переполнения.

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

Таблица 9.2. Диапазон и способ хранения в Firebird типов данных NUMERIC и DECIMAL

Точность

Тип

Диалект 1

Диалект 3

1-4

NUMERIC

SMALLINT

SMALLINT

1-4

DECIMAL

INTEGER

INTEGER

5-9

NUMERIC и DECIMAL

INTEGER

INTEGER

10-18

NUMERIC и DECIMAL

BIGINT

DOUBLE PRECISION*

* Точные числа с точностью больше чем 9, могут быть объявлены в диалекте 1 базы данных без появления исключения. Эти числа будут храниться как DOUBLE PRECISION и будут подчиняться тем же самым ограничениям точности, что и любые числа с плавающей точкой. В процессе преобразования базы данных диалекта 1 в диалект 3 клиент диалекта 2, открыв таблицу, содержащую столбцы DECIMAL или NUMERIC с точностью, большей 9, получит сообщение об ошибке. Более подробную информацию о преобразованиях диалекта 1 в диалект 3 см. в разд. "Специальная тема миграции: диалекты SQL" главы 8.