sql-server - 在 SQL Server 中将小数转换为 int 会使结果列可以为空?
问题描述
我有时使用sp_describe_first_result_set
从选择查询生成类型定义,今天我注意到将 adecimal
转换为 anint
会使结果列可以为空(至少根据 的输出sp_describe_first_result_set
)。我很感兴趣,因为我在转换文档或十进制文档中找不到关于未能将小数转换为整数而不是溢出和截断的任何内容,并且我希望实际失败会引发错误而不仅仅是返回 null。但也许我忽略了一些东西?
这是一个简单的复制案例。
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 位)14.0.3049.1
解决方案
推荐阅读
- css - laravel 中的 Boostrap 粘性页脚
- python - 使用 df.to_excel (openpyxl) 从数据框写入时如何在 Excel 中增加行
- javascript - 为什么我不能在 index.js 中使用导出的路由
- cmake - Percona5.7 cmake 在 centos 7 上失败
- mysql - 如何为 wiki 家族建立数据库?
- java - Java - 如何测试 Catch 块?
- javascript - 来自 javascript 对象的方法始终未定义
- android - 根据 WHERE 条件从 Sqlite 中获取记录
- yaml - Hugo 嵌套循环遍历多层 YAML
- java - 如何在java中将字符串转换为布尔值?