Числовые типы данных SQL
Пересказ статьи Smruti Ranjan. SQL Numeric Data Types
SQL Server поддерживает следующие числовые типы:
- Bit
- Decimal и numeric
- Float и real
- Int, bigint, smallint и tinyint
- Money и smallmoney
1. Bit
Каждые 8 бит представляют 1 байт.
True или False может конвертироваться в битовые значения 1 или 0.
При преобразовании в bit любое ненулевое значение дает 1:
select cast(273 as bit) _true_, cast(0 as bit) _false_
_true_ _false_
1 0
2. Decimal, Numeric
Типы данных с фиксированной точностью и масштабом:
Decimal(p, [s]), Numeric(p,[s])
Диапазон изменения от -10³⁸ +1 до 10³⁸-1
p означает точность, которая включает и левую, и правую часть от десятичной точки. Максимальным значением является 38, значение по умолчанию - 18.
s - масштаб, который представляет собой количество цифр после десятичной точки; число цифр до десятичной точки может быть получено путем вычитания s из p.
Float и Real (Float(24))
Тип данных приблизительных значений (Float ([n]))
n находится в диапазоне между 1 и 53, значение по умолчанию - 53.
Если n находится между 1 и 24, точность будет равна 7, а для хранения используется 4 байта. Может быть использовано любое значение в этом диапазоне, при этом n будет считаться равным 24.
Если n находится между 25 и 53, точность будет равна 15, а для хранения используется 8 байтов. Может быть использовано любое значение в этом диапазоне, при этом n будет считаться равным 53.
select cast(1235524 as float(10)) -- = 1235524
select cast(12355243 as float(10)) -- = 1.235524E+07
(Поскольку n = 24, что означает точность 7 цифр; если количество цифр превышает 7, число будет представлено в экспонентой форме; E означает 10.)
В то время как хранение float зависит от значения n, для хранения real используется фиксированный размер 4 байта.
4. Int, bigint, smallint и tinyint
Эти точные типы используют целочисленные данные в различных диапазонах:
При определении столбцов вам следует использовать тип, который может заведомо содержать все возможные значения.
Целые значения, превышающие максимальное допустимое значение типа, преобразуются в десятичный тп данных, а не тип bigint. Например:
SELECT 2147483647 / 2 AS Result1, 2147483649 / 2 AS Result2
5. Money и smallmoney
Служат для представления денежных значений.
Денежные или монетарные данные необходимо заключать в одиночные кавычки.
(Замечание переводчика: для констант монетарного типа используется префикс $:
select SQL_VARIANT_PROPERTY($123,'BaseType') тип_результата;
тип_результата
------------------
money
)
Ссылки по теме
1. Учебник по логическим типам SQL
2. SQL FLOAT: 3 пункта, которые помогут избежать странных математических ошибок
3. Старшинство типов данных и неявное преобразование
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой