CASE WHEN Items.SerialNumber = -1 THEN Items.Aux1
ELSE Items.SerialNumber
END AS 'CheckNo'
这不起作用。我正在将转换varchar转换为int错误。我很困惑,因为如果我把它作为一个查询运行它。我只是在case语句中得到错误而不明白为什么。
答案 0 :(得分:7)
来自MSDN case statement
从中输入类型集中的最高优先级类型 result_expressions和可选的else_result_expression。
INT
优先级高于varchar
,因此所有when表达式都将隐式转换为INT
。要了解有关数据类型优先级 check here
要避免隐式整数转换,请将INT
转换为Varchar
表达式中的when
SELECT CASE
WHEN Items.SerialNumber = -1 THEN Items.Aux1
ELSE Cast(Items.SerialNumber AS VARCHAR(100))
END AS 'CheckNo'