sql - 结果是什么
问题描述
以下查询给出的输出为 123.5
SELECT STR(123.45, 6, 1);
GO
但是.. 以下查询给出的输出为 123.3
SELECT STR(123.35, 6, 1);
GO
为什么它没有给出 123.4 的结果?
SELECT STR(123.45, 6, 1);
GO
SELECT STR(123.35, 6, 1);
GO
以下查询给出的输出为 123.3
SELECT STR(123.35, 6, 1);
GO
为什么它没有给出 123.4 的结果?
解决方案
从SQL Server函数的文档中:STR
【第一个参数】是带小数点的近似数值(float)数据类型的表达式。
从我的本地测试来看,即使我传入了一个DECIMAL
值,您看到的不精确仍然会继续,并且输入参数仍然被视为浮点数。那是:
SELECT STR(CAST(123.45 AS DECIMAL(10,2)), 6, 1)
仍然返回123.5
。
如果您想在 SQL Server 中精确截断一个数值,那么只需尝试转换为一种DECIMAL
类型,例如
SELECT CAST(123.45 AS DECIMAL(10,1))
123.4
如您所料返回。
推荐阅读
- javascript - 到达较小的断点时,滑块导航突然出现
- azure-active-directory - 如何在 24 小时后强制执行 MFA 会话到期
- visual-studio-code - 是否可以检测 VS Code 何时处于活动/非活动状态一段时间?
- python - 在 Python 中绘制 2 级 NEXRAD 雷达数据 - TypeError:“MaskedArray”对象不可调用
- python - 在 Panda 中对聚合值进行排序
- cloud - oracle erp云应用中如何识别表名
- c# - Linq忽略OrderBy中的空格
- c# - 继承泛型不能向上转换
- css - 尝试使用 node.js 编译 sass 文件时收到错误消息
- react-native - 访问样式属性并更改它