我在 @MyTable
表中有 [BRKTFRT1] [decimal](7, 4
) 列。
当我尝试插入值 34.1234555
时,它成功地将 34.1235
插入到列中。实际上,我需要防止这种舍入,并在需要任何此类舍入时引发错误。我们如何添加这样的约束?
注意:一种想法是检查输入字符串的长度。但我想将其添加为 CHECK 约束,这样开发人员就不会错过这个约束。
注意:我使用的是 SQL Server 2012
注意:我并不是想“避免”舍入。我需要通知调用程序它们提供了不正确的值(通过引发错误)。
DECLARE @MyTable TABLE (BRKTFRT1 [decimal](7, 4) )
DECLARE @MyStringDecimal VARCHAR(20)
SET @MyStringDecimal = '34.1234555'
INSERT INTO @MyTable (BRKTFRT1) VALUES (@MyStringDecimal)
SELECT BRKTFRT1 FROM @MyTable
最佳答案
When SET NUMERIC_ROUNDABORT is ON, an error is generated after a loss of precision occurs in an expression. [...] Loss of precision occurs when an attempt is made to store a value with a fixed precision in a column or variable with less precision
关于sql-server - 发生小数点四舍五入时引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18307122/