欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记录一个CASE WHEN THEN ELSE END 语句的问题

程序员文章站 2022-03-11 09:05:30
...

记录一个CASE WHEN THEN ELSE END 语句的问题

在case中的不同分支如果返回了不同类型的值,有一个类型优先级的问题,它会将优先级低的类型转为优先级高的类型,列如:

select case when status>'6' then '大'   when status='3' then '小'  else    status    end AS a from member

satus为整形字段,这里就会出现问题,在将 varchar 值 ‘大’ 转换成数据类型 int 时失败,这里就是由于int类型优先级高所以这里程序会想将varchar类型转化成int类型。

问题解决:

select case when status>'6' then '大'   when status='3' then '小'  else   CAST(status AS varchar(11))   end AS a from member
相关标签: sqlserver