Skip to content

Числовые типы данных SQL

Пересказ статьи Smruti Ranjan. SQL Numeric Data Types


SQL Server поддерживает следующие числовые типы:

  1. Bit

  2. Decimal и numeric

  3. Float и real

  4. Int, bigint, smallint и tinyint

  5. 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. Старшинство типов данных и неявное преобразование
Категории: T-SQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.