Sql server 转换varchar值时转换失败';否';到数据类型tinyint

Sql server 转换varchar值时转换失败';否';到数据类型tinyint,sql-server,Sql Server,我有一个SQL server表,其中有一个tinyint列。该列的值将为0或1或2 If it is "0", I have to show "No". If it is "1", I have to show "Yes". If it is 2, it needs to show just 2. 下面是我的疑问 select case when flag=1 then 'Yes' when flag=0 then 'No' else flag end flag from

我有一个SQL server表,其中有一个tinyint列。该列的值将为0或1或2

  If it is "0", I have to show "No". 
  If it is "1", I have to show "Yes". 
  If it is 2, it needs to show just 2.
下面是我的疑问

select 
case when flag=1 then 'Yes'
when flag=0 then 'No' 
else flag 
end flag
from Employee
当我执行这个查询时,我得到以下异常

将varchar值“Yes”转换为数据类型tinyint时,转换失败


不能在
案例中混用数据类型。将数字输出转换为字符串

select case when flag=1 then 'Yes'
            when flag=0 then 'No' 
            else CAST(flag AS CHAR(1)) 
       end flag
from Employee

您的Else部分是TinyInt类型,其他case语句返回Varchar。这就产生了问题。您可以使用下面的方法解决此问题

(SQL与Juergen post相似,但有微小的变化)

Tiny Int的大小为0-255,因此我们可以转换为Varchar(3)

可以将数据类型与大小写表达式混合,但最终结果将转换为优先级最高的数据类型(
tinyint
)。
select case when flag=1 then 'Yes'
            when flag=0 then 'No' 
            else CAST(flag AS Varchar(3)) 
       end flag
from Employee