记录一个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
推荐阅读
-
关于case when语句的报错问题详解
-
SQL中的case when then else end用法
-
sql学习之CASE WHEN THEN ELSE END的用法
-
sql语句case when then else end 返回一个符合条件的值
-
关于case when语句的报错问题详解
-
一个很奇怪的问题:同样的一条sql语句,在mysql中能查到记录,而在php中却查不到
-
一个很奇怪的有关问题:同样的一条sql语句,在mysql中能查到记录,而在php中却查不到
-
当case when then else end 语句遇上sum或count等统计函数
-
一个很奇怪的有关问题:同样的一条sql语句,在mysql中能查到记录,而在php中却查不到
-
sql学习之CASE WHEN THEN ELSE END的用法