记录一个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