使用SQL Case语句获取转换错误

使用SQL Case语句获取转换错误,sql,sql-server,Sql,Sql Server,这不管用。我得到一个将varchar转换为int的错误。我很困惑,因为如果我把它作为一个where查询来运行的话。我只是在case语句中得到了错误,不知道为什么 来自案例陈述 从中的类型集中返回优先级最高的类型 结果\u表达式和可选的else\u结果\u表达式 INT的优先级高于varchar,因此所有when表达式都将隐式转换为INT。了解更多有关数据类型优先级的信息 要避免隐式整数转换,请在when表达式中将INT转换为Varchar CASE WHEN Items.SerialNumbe

这不管用。我得到一个将varchar转换为int的错误。我很困惑,因为如果我把它作为一个where查询来运行的话。我只是在case语句中得到了错误,不知道为什么

来自
案例陈述

从中的类型集中返回优先级最高的类型 结果\u表达式和可选的else\u结果\u表达式

INT
的优先级高于
varchar
,因此所有when表达式都将隐式转换为
INT
。了解更多有关数据类型优先级的信息

要避免隐式整数转换,请在
when
表达式中将
INT
转换为
Varchar

 CASE WHEN Items.SerialNumber = -1 THEN Items.Aux1
 ELSE Items.SerialNumber
 END AS 'CheckNo'

SerialNumber
Aux1
列的数据类型是什么?您的
CASE
语句需要返回一种类型的数据。因此,如果
SerialNumber
Aux1
是不同的数据类型,即
SerialNumber
=
varchar
Aux1
=
int
那么这就是您的问题。这里涉及的列的类型是什么?您是否也可以显示“工作”示例?您使用的是什么rdbms?一列只能返回一种数据类型。因此,如果Items.Aux1或Items.serial number不具有相同的数据类型(或精度),系统将无法执行您要求的操作。您必须强制转换/转换以将其中一个从int更改为varchar!Aux1是一个varchar。SerialNumber是一个整数。我怎样才能通过它呢。这是超级令人沮丧的lol。我正在使用SQL Server 2008。当我说工作时,我的意思是如果我把它设为-1,我就不会出错。不过,有评论说我的数据类型不同,这很可能是我的问题。谢谢,我最后在SerialNumber上使用了转换。我现在感觉非常慢。谢谢大家在这方面的帮助。
SELECT CASE
         WHEN Items.SerialNumber = -1 THEN Items.Aux1
         ELSE Cast(Items.SerialNumber AS VARCHAR(100))
       END AS 'CheckNo'