需求:
根据数字状态返回中文状态,(其实可以通过数据字段取值);当status=5,数据置顶,引入其他字段先标记,再排序
SELECT b.*
FROM (
select <include refid="Base_Column_List"></include>,
(CASE
WHEN status = 1 THEN
'新建'
WHEN status = 2 THEN
'待本部审批'
WHEN status = 3 THEN
'待总部审批'
WHEN status = 4 THEN
'已审批'
ELSE
'已退回'
END) statusName,
(CASE
WHEN is_oracle = 0 THEN
'是'
ELSE
'否'
END) isOracleName,IF(`status`=5,0,1) as ppp
from payment_return_apply
where is_del = 0 ORDER BY if(status = 5,0,1),status
) b where b.is_del = 0
IF表达式
IF(A,B,C):
如果 A 是TRUE (A <> 0 and A<> NULL),则 IF()的返回值为B; 否则返回值则为 C。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
SELECT IF(sex=1,"男","女") AS s FROM classmates
WHERE sex != '';
CASE WHEN THEN
case具有两种格式。简单case函数和case搜索函数。
--简单case函数
case sex
when '1' then '男'
when '2' then '女’
else '其他' end
--case搜索函数
case when sex = '1' then '男'
when sex = '2' then '女'
else '其他' end
有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
显示格式:
语文 数学 英语
及格 优秀 不及格
------------------------------------------
select
(case when 语文>=80 then '优秀'
when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
when 英语>=60 then '及格'
else '不及格') as 英语,
from table
本文介绍了一种使用SQL的CASE语句和IF函数来实现数据状态转换的方法,包括将数字状态转换为中文描述,以及如何根据分数进行成绩评定。
3683

被折叠的 条评论
为什么被折叠?



