Типы данных

Типы данных SQL-сервера Firebird используются при создании доменов, таблиц, просмотров, хранимых процедур, объявления контекстных переменных и параметров в PSQL-блоках/хранимых процедурах/триггерах.

Таблица типов данных

ИмяРазмерТочностьОписание
BLOBПеременныйНет. Размер сегмента BLOB ограничивается 64К.Тип данных с динамически изменяемым размером для хранения больших данных, таких как графика, тексты, оцифрованные звуки. Базовая структурная единица — сегмент. Подтип Blob описывает содержимое.
CHAR(n)n/кол-во_байт_на_символ, т.е. зависит от кодировкиот 1 до 32 767 байтов.Набор символов определяет размер символов в байтах и задает количество символов, которое может быть меньше 32К CHAR фиксированной длины или строка текста. В случае если строка меньше заявленой - она добивается пробелами с конца до заданной длины(пример ниже)
CHARACTER(n)


VARCHAR(n)
от 1 до 32 765 байтов.Набор символов определяет размер символов в байтах и задает количество символов, которое может быть меньше 32К CHAR переменной длины или строка текста. Конечные пробелы сохраняются, но обрезаются те, что не вмещаются в обьявленую длину(пример ниже)
CHAR VARYING (n)


CHARACTER VARYING (n)


DATE32 бита1 января 0001 г. – 31 декабря 9999 г.Сохраняет дату в 32-битовом длинном слове
⚠️ в 1-м - эквивалентно TIMESTAMP
DECIMAL (precision, scale)Переменный (16, 32 или 64 бита)precision = от 1 до 18; указывает, по меньшей мере, precision количество цифр для хранения. scale = от 0 до 18. Задает количество знаков после точки. Должно быть меньше или равно precisionЧисло с десятичной точкой, имеющей после точки scale разрядов. Пример: DECIMAL(10,3) содержит число точно в следующем формате: ppppppp.sss
DOUBLE PRECISION64 битаот 2.225 x 10^–308 до 1.797 x 10^308IEEE двойной точности. 15 цифр.
FLOAT32 битаот 1.175 x 10^–38 до 3.402 x 10^38IEEE одинарной точности. 7 цифр.
INT6464 битаот –2^63 до (2^63)-1аналогично NUMERIC(18,0)
⚠️ доступно только в 3-м диалекте
INTEGER32 битаот –2,147,483,648 до 2,147,483,647Знаковое длинное (двойное слово).
NCHAR(n)n символовот 1 до 32 767 байтов.Тоже самое что CHAR(n), за исключением того что NCHAR использует кодировку ISO8859_1 по умолчанию.
NATIONAL CHAR(n)


NATIONAL CHARACTER(n)


NUMERIC (precision, scale)Переменный (16, 32 или 64 бита)precision = от 1 до 18; точное количество цифр для хранения. scale = от 0 до 18; задает количество знаков после точки. Должно быть меньше или равно precision.Число с десятичной точкой, имеющей после точки scale разрядов. Пример: NUMERIC(10,3) содержит число точно в следующем формате: ppppppp.sss
SMALLINT16 битот –32768 до 32767Знаковое короткое (слово).
TIME32 битаот 0:00:00.000 до 23:59:59.9999Беззнаковое целое типа InterBase ISC_TIME. Время дня в единицах 0.0001 секунды после полуночи.
⚠️ доступно только в 3-м диалекте
TIMESTAMP64 бита1 января 0001 г. 0:00:00.0000 – 31 декабря 9999 г. 23:59:59.9999Тип InterBase ISC_TIMESTAMP. Комбинация информации DATE и TIME.

примеры по char и varchar

CREATE TABLE NEW_TABLE ( VCH VARCHAR(10), CH CHAR(10) );

INSERT INTO NEW_TABLE (VCH, CH) VALUES ('   000   ', '   000   ');
INSERT INTO NEW_TABLE (VCH, CH) VALUES ('111   ', '111   ');
INSERT INTO NEW_TABLE (VCH, CH) VALUES ('222', '222');
INSERT INTO NEW_TABLE (VCH, CH) VALUES ('   333', '   333');
INSERT INTO NEW_TABLE (VCH, CH) VALUES ('444          ', '444          ');/*10 пробелов*/
select '*'||ch||'*' ch, '*'||vch||'*' vch  from new_table

результат

CHVCH
* 000 ** 000 *
*111 **111 *
*222 **222*
* 333 ** 333*
*444 **444 *

Обсуждение