int, bigint, smallint и tinyint (Transact-SQL)
Типы точных числовых данных, использующие целые значения.
Тип данных |
Диапазон |
Хранилище |
---|---|---|
bigint |
от -2^63 (-9 223 372 036 854 775 808) до 2^63-1 (9 223 372 036 854 775 807) |
8 байт |
int |
от -2^31 (-2 147 483 648) до 2^31-1 (2 147 483 647) |
4 байта |
smallint |
от -2^15 (-32 768) до 2^15-1 (32 767) |
2 байта |
tinyint |
от 0 до 255 |
1 байт |
Замечания
Тип данных int является основным типом целочисленных данных в SQL Server. Тип данных bigint используется для хранения значений, выходящих за диапазон, поддерживаемый типом данных int.
В таблице приоритетов типов данных тип bigint располагается между smallmoney и int.
Функции возвращают значения типа bigint только в том случае, когда параметр выражения также имеет тип bigint. В SQL Server не предусмотрено автоматического преобразования других типов целочисленных данных (tinyint, smallint и int) в значения типа bigint.
Внимание! |
---|
При использовании таких арифметических операторов, как +, -, *, / или %, для явного или неявного преобразования констант типа int, smallint, tinyint и bigint в значения типа float, real, decimal и numeric в SQL Server используются различные правила определения типов данных и точности результата, зависящие от наличия автоматической параметризации запроса. Поэтому одинаковые выражения в различных запросах могут иногда возвращать различные результаты. В случае отсутствия в запросе автоматической параметризации константа сначала преобразуется в значение типа numeric, точности которого хватает для ее хранения, а затем происходит преобразование в заданный тип данных. Например, константа 1 преобразуется в numeric (1, 0), а константа 250 — в numeric (3, 0). При наличии в запросе автоматической параметризации константа всегда сначала преобразуется в значение типа numeric (10, 0), а затем в данные конечного типа. При использовании оператора «/» могут различаться как точность, так и само значение результата. Например, результат автопараметризованного запроса, включающего в себя выражение SELECT CAST (1.0 / 7 AS float), отличается от аналогичного запроса без автоматической параметризации, так как результаты выполнения автопараметризированного запроса усекаются до значений, соответствующих типу данных numeric (10, 0). Дополнительные сведения о параметризованных запросах см. в разделе Простая параметризация. |
См. также