转换varchar值时转换失败

时间:2017-05-02 12:48:53

标签: sql sql-server

我在运行下面的case语句时收到此错误。我想我必须在某些时候转换,但不知道在哪里或如何。

  

转换varchar值时转换失败'重新分配'数据   输入int。

,(CASE WHEN Mstime <=10 THEN CAST('reassign' as varchar(30) )
            WHEN Mstime >=10 THEN Mstime END ) as TimeGroup

2 个答案:

答案 0 :(得分:2)

如果这是您要为该表达式返回的数据类型,则需要cast() Mstimevarchar(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而不是字符串。