MySQL中case when 嵌套的使用方法
MySQL中有一个用于判断多种情况的语句,类似于java中的switch…case,在写SQL过程中需要用到case when嵌套,在这里记录一下,以防忘记。简单例子:SELECTCASEWHEN ISNULL(work_order_no) THEN(CASE WHEN 2 > 1 THEN 11 ELSE 22 END)ELSE(CASE WHEN 1 > 0 THEN 33 ELS
·
MySQL中有一个用于判断多种情况的语句,类似于java中的switch…case,在写SQL过程中需要用到case when嵌套,在这里记录一下,以防忘记。
简单例子:
SELECT
CASE
WHEN ISNULL(work_order_no) THEN
(CASE WHEN 2 > 1 THEN 11 ELSE 22 END)
ELSE
(CASE WHEN 1 > 0 THEN 33 ELSE 66 END)
END
FROM
qk_20030102
WHERE
work_order_no = 'GD0000070324'
实际使用的例子:
SELECT
work_order_no,
CASE --最外层case
WHEN UNIX_TIMESTAMP( --获取时间戳--
STR_TO_DATE(--字符串转日期格式--
chuangjian_time,
'%Y-%m-%d %H:%i:%s'
)
) > UNIX_TIMESTAMP(
STR_TO_DATE(
CONCAT(
substring(chuangjian_time, 1, 10),--字符串截取--
"18:00:00"
),
'%Y-%m-%d %H:%i:%s'
)
)
THEN
(
CASE --内层case1
WHEN UNIX_TIMESTAMP(
STR_TO_DATE(
substring(chuangjian_time, 1, 10),
'%Y-%m-%d %H:%i:%s'
)
) + 124200 >= UNIX_TIMESTAMP(
STR_TO_DATE(
yuyue_opt_time,
'%Y-%m-%d %H:%i:%s'
)
) THEN
1
ELSE
0
END
)
ELSE
(
CASE--内层case2
WHEN UNIX_TIMESTAMP(
STR_TO_DATE(
assign_time,
'%Y-%m-%d %H:%i:%s'
)
) + 5400 >= UNIX_TIMESTAMP(
STR_TO_DATE(
yuyue_opt_time,
'%Y-%m-%d %H:%i:%s'
)
) THEN
1
ELSE
0
END
)
END
FROM
qk_20030102
更多推荐
已为社区贡献1条内容
所有评论(0)