我在运行下面的case语句时收到此错误。我想我必须在某些时候转换,但不知道在哪里或如何。
转换varchar值时转换失败'重新分配'数据 输入int。
,(CASE WHEN Mstime <=10 THEN CAST('reassign' as varchar(30) )
WHEN Mstime >=10 THEN Mstime END ) as TimeGroup
答案 0 :(得分:2)
如果这是您要为该表达式返回的数据类型,则需要cast()
Mstime
到varchar(30)
。
,(case when Mstime <=10 then cast('reassign' as varchar(30) )
when Mstime >=10 then cast(Mstime as varchar(30) )
end ) as TimeGroup
答案 1 :(得分:2)
投放else
,而不是then
(它已经是字符串):
(CASE WHEN Mstime <= 10 THEN 'reassign'
WHEN Mstime >= 10 THEN CAST(Mstime as varchar(30))
END) as TimeGroup
您遇到的问题是ELSE
会返回INT
。根据类型兼容性规则,SQL Server会尝试使CASE
表达式返回INT
而不是字符串。