Преобразование десятичного числа в int в SQL Server делает столбец результата обнуляемым? - PullRequest
0 голосов
/ 25 октября 2019

Иногда я использую sp_describe_first_result_set для генерации определений типов из запросов на выборку, и сегодня я заметил, что приведение decimal к int делает получаемый столбец обнуляемым (по крайней мере, в соответствии с выводомsp_describe_first_result_set). Мне интересно, потому что я не смог найти ничего в конвертируемых документах или десятичных документах о невозможности конвертировать десятичные числа в целые, кроме переполнения и усечения, и я ожидалфактическая ошибка, чтобы вызвать ошибку, а не просто вернуть ноль. Но, может быть, я что-то упустил?

Вот простой случай воспроизведения.

CREATE TABLE #test_case (
    dval DECIMAL(9, 0) NOT NULL
);

EXEC sp_describe_first_result_set N'
SELECT
    dval,
    CAST(dval AS INT) AS dval_cast
FROM #test_case;
', null, 0;

-- Output:
-- name       is_nullable  system_type_name
-- ----       -----------  ----------------
-- dval       0            decimal(9,0)
-- dval_cast  1            int

Мы используем Microsoft SQL Server Standard (64-bit) 14.0.3049.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...