【发布时间】:2021-10-13 17:16:07
【问题描述】:
我在运行查询时遇到以下错误
SELECT (0.01 * CAST(instruct_to_bal_avl_aft AS INT) )
FROM [FullYear].[dbo].[aa_momo_log]
将 varchar 值“3.0”转换为数据类型 int 时,消息 245,级别 16,状态 1,行 12 转换失败。
【问题讨论】:
-
嗯...那是因为您的 varchar 值为 3.0,无法转换为 int。自己试试,你会看到的。选择 cast('3.0' as int)
-
要解决这个问题,您可能需要先将字符串转换为小数。然后将小数转换为int。然后问自己为什么要将整数存储为小数的字符串表示形式。选择转换(整数,转换(十进制(7,2),'3.0'))
-
经验法则,如果您要对列进行数学运算,您不希望将其存储为字符串。
-
Oracle、DB2 等在进行 cast('3.0' as int) 时返回 3。
标签: sql sql-server