sql - 错误“将 varchar 值 'ABC' 转换为数据类型 int 时转换失败。”
问题描述
需要一些帮助来解决我在 SQL Server 中遇到的错误。我的查询中有以下行在“UserCode”列中搜索,然后根据这些代码对“Amount”列求和。但是,在 usercode 列中,有一些变量,例如“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
?
是适当类型的占位符,可能是、int
或类似的东西。bigint
decimal(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
推荐阅读
- flutter - 状态发生变化时如何导航到另一个屏幕
- wordpress - 创建新的自定义帖子时创建 Wordpress 用户
- wordpress - 是否可以将本地 WordPress 博客的 public 设置为 false
- python - 使用替换字典随机替换文件中的某些单词
- bash - 在 dokefile 运行指令中转义带有特殊字符和单引号的字符串
- matlab - 获取八度音阶中给定参数的列表
- java - 如何限制用户使用 Java Streams 从列表中仅选择两个枚举?
- java - 错误 69 87 何时使用生物特征验证 APDU 指令
- css - 将动态大小的 div 放置在另一个动态大小的 div 的底部
- odoo - Odoo 无法解析我的 xml 文件中的树视图