0

我有一列是 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。

4

2 回答 2

2

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

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

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

于 2020-10-26T04:43:01.697 回答
0

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

于 2020-10-26T04:42:46.127 回答