sql update语句的转换问题

时间:2017-10-27 18:00:03

标签: tsql

我的更新声明一直在失败。

 Update dbo.Marker 
 set MarkId= case 
                when Ninja = 55 and cast(Tometo as varchar) = 0031A then 22 
                else MarkId 
             end

MarkId的数据类型是int数据类型, Ninja是int数据类型,Tometo是varchar(9)。

这是我得到的错误

Msg 245,Level 16,State 1,Line 48 将varchar值'031A'转换为数据类型int时,转换失败。

1 个答案:

答案 0 :(得分:2)

您在0031A附近缺少报价

Update dbo.Marker 
set MarkId= case 
              when Ninja = 55 and cast(Tometo as varchar) = '0031A' then 22 
              else MarkId 
            end

要查找导致问题的行,请在查询

下方运行
select case 
         when Ninja = 55 and cast(Tometo as varchar) = '0031A' then 22 
         else MarkId 
       end
from dbo.Marker 

然后找出哪些行返回非整数值。我无法帮助您提供更多数据。