如何解决如何通过添加另一个数字来更新具有数字的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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。