gpt4 book ai didi

sql - 错误 "Conversion failed when converting the varchar value ' ABC' 到数据类型 int。”

转载 作者:行者123 更新时间:2023-12-04 21:41:14 24 4
gpt4 key购买 nike

需要一些帮助来解决我在 SQL Server 中遇到的错误。我在“UserCode”列中搜索的查询中有以下几行,然后根据这些代码对“Amount”列求和。但是,在用户代码列中,有一些变量,例如“ABC”,而不是所有整数。这会导致错误“将 varchar 值‘ABC’转换为数据类型 int 时转换失败。我尝试搜索但找不到解决方法。谁能建议克服此错误的最佳方法是什么?

SUM((CASE WHEN (ec.UserCode >= 100 AND ec.UserCode <= 200) 
THEN e.Amount
ELSE '0'
END)
) AS 'ColumnName'

谢谢!

最佳答案

else 返回一个字符串,所以这是一个问题。只有当 e.Amount 存储为字符串时才会导致另一个问题 -- 恐怖的恐怖,没有存储具有正确类型的值。

因此,如果那是导致问题的代码,我建议:

SUM(CASE WHEN ec.UserCode >= 100 AND ec.UserCode <= 200
THEN TRY_CONVERT(?, e.Amount)
ELSE 0
END) AS ColumnName

? 是适当类型的占位符,可能是 intbigintdecimal(20, 4) 或类似的东西。

需要注意的是:如果UserCode 是一个字符串,也可能导致错误。为此,使用字符串比较:

SUM(CASE WHEN ec.UserCode >= '100' AND ec.UserCode <= '200'
THEN TRY_CONVERT(?, e.Amount)
ELSE 0
END) AS ColumnName

或者,如果您愿意,可以在 try_convert() 那里:

SUM(CASE WHEN TRY_CONVERT(int, ec.UserCode) >= 100 AND
TRY_CONVERT(int, ec.UserCode <= 200
THEN TRY_CONVERT(?, e.Amount)
ELSE 0
END) AS ColumnName

关于sql - 错误 "Conversion failed when converting the varchar value ' ABC' 到数据类型 int。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59933973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com