【发布时间】:2021-10-29 01:13:47
【问题描述】:
有两列的数据类型为 Decimal (16,4)
- OwnedShares
- TotalOutstandingShares
我正在尝试使用这两列计算百分比,然后将其转换为 Decimal(7,4)。
正在使用的代码:
Convert(Decimal(7,4),Case when OwnedShares = 0 or TotalOutstandingShares = 0 then 0 else ((OwnedShares/TotalOutstandingShares)*100) end)
我收到错误消息:“将数字转换为数字数据类型的算术溢出错误。”
谁能帮我弄清楚我哪里出错了?
【问题讨论】:
-
语法不正确。
CONVERT(expression, datatype),不落后。 -
@Akina,我认为语法没有任何错误。 T-SQL 中 CONVERT 函数的语法是 CONVERT (data_type [(length)], expression [, style])。我从docs.microsoft.com/en-us/sql/t-sql/functions/… 验证了这一点
-
:facepalm: 如果是这样,那么为什么这个问题被标记为与 MySQL 相关?删除不相关的标签...完成。
-
您的记录似乎包含大量的 OwnedShares 和少量(但不为零)的 TotalOutstandingShares。
sp_decribe_first_result_set认为你需要一个decimal(38,18)来保存(OwnedShares/TotalOutstandingShares)*100的结果。另请参阅:Precision, scale, and Length. -
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: sql-server type-conversion sqlcode