我们有一个存储过程,它将余额保存到db。
今天我们有一个例外:
SqlTruncateException:数字算术会导致截断。
我们收到的余额超过10亿,这就造成了这一例外。我不在乎这么大的价值是否是错误的,但我想知道SqlCient奇怪行为的原因。
我们通过一组余额:
public class LoroAccountBalance
{
...
public decimal? Balance { get; set; }
...
}
它映射到用户定义的表类型:
create type Settlement.LoroBalanceType as table
我有一列声明为十进制(4,4)。目前,它存储的值为0.0400。现在,我需要更新存储在0.0400到9.95之间的值,我使用了以下查询:
Update <tablename>
set <columnname>= 9.95
where <condition>
尝试执行时,会得到以下错误:将数字转换为数据类型数值的算术溢出错误。声明已被终止。
帮帮忙吧。
我在一个表中有两列填充了整数值。对于每条记录,我希望将这两列的值相除,并格式化输出,以便将小数点移动到右边的位置。
例如,如果一条记录的两个列的值分别为4和1,并且我想要将1除以4(因此是1/4),那么我希望输出为25.00。
这是我之前尝试的最后一件事:
CAST(Total AS Decimal(2))/CAST(TotalAnswers AS Decimal(2)) AS 'Percent'
我找不到CAST函数的语法解释,无法了解传入的decimal参数表示什么。当我改变它时,它有时会改变小数点右边的位数,但结果并不总是我所期望的,所以我想在这方面得到一些帮助。
我正在尝试为SQL Server表编写一条insert语句,该语句将值1插入到小数字段中。这个字段的类型是decimal( 10,10),据我所知,这意味着它总共可以有10个数字,其中最多10个数字可以在小数点之后。但是,当我尝试运行insert语句时,我得到了以下错误:
Arithmetic overflow error converting int to data type numeric.
如果我将字段的数据类型更改为decimal(11,10),它会突然起作用。我有什么不明白的吗?我做错了什么?
我有一个十进制值为18,8的列,我被要求在,之后将其扩展到18,18以容纳更多的位。
ALTER TABLE [dbo].[TransakcjeGotowkowe]
ALTER COLUMN TransakcjeGotowkoweKwota decimal (18,18) NULL
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated.
我也尝试过通过GUI来做这件事。没有其
我首先使用实体框架代码。当试图将负十进制值保存到Server数据库时,会发生此错误。下面列出了我要保存的模型。
public class Material
{
public Material()
{
Categories = new List<Category>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[Required]
运行此代码时,SQL Server Management Studio抛出错误:
declare @percentage numeric(3,2)
set @percentage = cast(15 as numeric(3,2))
但是当我将数值声明更改为
declare @percentage numeric(4,2)
set @percentage = cast(15 as numeric(4,2))
一切都很顺利。
对数值数据类型有限制吗?