Почему POWER (2, 32) выдает ошибку? SQL - PullRequest
0 голосов
/ 04 февраля 2020

Я попытался использовать функцию SQL POWER

SELECT POWER(2, 32)

, и он вернул эту ошибку

Сообщение 232, Уровень 16, Состояние 3, Строка 21
Арифметика c ошибка переполнения для типа int, значение = 4294967296.000000.

Почему выдается эта ошибка и как ее можно решить?

1 Ответ

5 голосов
/ 04 февраля 2020

2 в SELECT POWER(2, 32) - это int, а наибольшее значение, которое может хранить int, составляет 2 147 483 647. 4 294 967 296 слишком велико для этого.

Преобразование int в bigint.

SELECT POWER(CONVERT(bigint,2), 32);

Из POWER (Transact- SQL) - Типы возврата :

Тип возврата зависит от типа ввода float_expression :

Input type                              |Return type
----------------------------------------|--------------
float, real                             |float
decimal(p, s)                           |decimal(38, s)
int, smallint, tinyint                  |int
bigint                                  |bigint
money, smallmoney                       |money
bit, char, nchar, varchar, nvarchar     |float
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...