如何通过添加另一个数字来更新具有数字的varchar列?

问题描述

我有一列是varchar(80)并存储美元金额(没有$符号)。我想通过添加其他金额来更新值,例如现有金额是96.73,我想加1.00来达到97.73。

我尝试了转换并没有任何运气。我尝试过:

set CAVALUETEXT = convert(INT,CAVALUETEXT) + 1.00
set CAVALUETEXT = cast(cavaluetext as int) + 1.00

并得到相同的错误:

将varchar值'96 .73'转换为数据类型int时转换失败。

我认为我正在使用SQL Server 2008。

解决方法

可以强制转换为DECIMAL,进行算术运算,然后强制转换回VARCHAR

UPDATE yourTable
SET CAVALUETEXT = CAST(
    CAST(CAVALUETEXT AS DECIMAL(19,2)) + 1.00 AS VARCHAR(21));

但是,这里更好的方法是停止在文本列中存储货币金额,尤其是可能需要进行算术运算的金额。为此使用适当的类型,例如DECIMAL(19,2)

,

您可以使用CONVERT(float,[YOUR Varchar])。例如,CONVERT(float,'0.123')将其转换为浮点数0.123。这仅适用于SQL Server。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...