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

Sql 如何通过添加另一个数字来更新具有数字的varchar列?,sql,sql-server,casting,sql-update,sql-convert,Sql,Sql Server,Casting,Sql Update,Sql Convert,我有一个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时,转换失败

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

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

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

您可以转换为十进制,执行算术运算,然后转换回
VARCHAR

UPDATE yourTable
SET CAVALUETEXT = CAST(
    CAST(CAVALUETEXT AS DECIMAL(19,2)) + 1.00 AS VARCHAR(21));
但这里更好的方法是停止在文本列中存储货币金额,特别是可能需要计算的金额。使用适当的类型,如
DECIMAL(19,2)

您可以转换为
DECIMAL
,执行算术,然后转换回
VARCHAR

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

但这里更好的方法是停止在文本列中存储货币金额,特别是可能需要计算的金额。请使用适当的类型,例如
十进制(19,2)

为什么要使用不受支持的软件?另外,修复您的数据模型!不要在字符串列中存储数字。为什么要使用不受支持的软件?另外,修复您的数据模型!不要在字符串列中存储数字。