Sql 转换案例中的varchar值时转换失败
当我运行下面的case语句时,我遇到了这个错误。我想我必须在某个时候转换,但不确定在哪里或如何转换 将varchar值“重新分配”转换为数据时,转换失败 输入intSql 转换案例中的varchar值时转换失败,sql,sql-server,Sql,Sql Server,当我运行下面的case语句时,我遇到了这个错误。我想我必须在某个时候转换,但不确定在哪里或如何转换 将varchar值“重新分配”转换为数据时,转换失败 输入int ,(当Mstime=10时,则Mstime结束)作为时间组 如果要为该表达式返回数据类型,则需要将cast()Mstime转换为varchar(30) ,(case when Mstime <=10 then cast('reassign' as varchar(30) ) when Mstime >=10
,(当Mstime=10时,则Mstime结束)作为时间组
如果要为该表达式返回数据类型,则需要将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
,(Mstime=10时的情况,然后强制转换(Mstime为varchar(30))
结束)作为时间组
如果要为该表达式返回数据类型,则需要将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
,(Mstime=10时的情况,然后强制转换(Mstime为varchar(30))
结束)作为时间组
播放其他
,而不是然后
(它已经是一个字符串):
(Mstime=10时的情况,然后强制转换(Mstime为varchar(30))
结束)作为时间组
您面临的问题是,
ELSE
返回一个INT
。根据类型兼容性规则,SQL Server尝试让大小写表达式返回INT
而不是字符串。强制转换else
,而不是then
(它已经是字符串):
(Mstime=10时的情况,然后强制转换(Mstime为varchar(30))
结束)作为时间组
您面临的问题是,ELSE
返回一个INT
。根据类型兼容性规则,SQL Server尝试让CASE
表达式返回INT
,而不是字符串
(CASE WHEN Mstime <= 10 THEN 'reassign'
WHEN Mstime >= 10 THEN CAST(Mstime as varchar(30))
END) as TimeGroup