Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新十进制列时,将nvarchar转换为数据类型numeric时出现算术溢出错误_Sql_Tsql - Fatal编程技术网

Sql 更新十进制列时,将nvarchar转换为数据类型numeric时出现算术溢出错误

Sql 更新十进制列时,将nvarchar转换为数据类型numeric时出现算术溢出错误,sql,tsql,Sql,Tsql,我正在尝试更新十进制列(18,2): 我得到以下错误: 将nvarchar转换为数据类型numeric时出现算术溢出错误 我做错了什么?我可以想出两个原因来解释为什么会发生这种情况 最明显的是表中有一个导致问题的update触发器 第二个是id实际上是一个字符,where子句应该是: where Id = '25465' 错误是“将nvarchar转换为数据类型numeric时出现算术溢出错误”。问题中的其中不是问题,因为它将int转换为(n)varchar。如果这就是问题所在,那么错误将是截

我正在尝试更新十进制列(18,2):

我得到以下错误:

将nvarchar转换为数据类型numeric时出现算术溢出错误


我做错了什么?

我可以想出两个原因来解释为什么会发生这种情况

最明显的是表中有一个导致问题的
update
触发器

第二个是
id
实际上是一个字符,
where
子句应该是:

where Id = '25465'

错误是“将nvarchar转换为数据类型numeric时出现算术溢出错误”。问题中的
其中
不是问题,因为它将
int
转换为
(n)varchar
。如果这就是问题所在,那么错误将是截断错误,而不是转换错误。正如您最初所想,一个写得不好的触发器更可能是问题所在suggests@Larnu . . . 转换方向是另一个方向——转换为数字而不是字符串:。除了
23456
不是
numeric
Gordon,正如db fiddle显示的错误不同。如果将值设为
数值
,则是(),但
23456
int
,这会产生不同的错误。@Larnu。实际数据类型取决于位数()。更重要的一点是,字符串被转换为数字,而不是相反。但是,我的观点没有改变,上面的
WHERE
us不会导致该错误。请向我们提供一个示例。该查询本身不会复制该错误。另外,为什么
CAST
将值
4657.00
转换为
十进制(18.2)
?它已经是一个
十进制数(6,2)
,所以铸造它似乎毫无意义。这让人觉得我们错过了很多全貌。
where Id = '25465'