casewhen套casewhen
时间: 2023-10-31 19:58:43 浏览: 177
CASE WHEN语句在MySQL中可以用来实现类似于Java中的switch...case的功能。可以通过嵌套多个CASE WHEN语句来实现更复杂的逻辑判断。在给出的引用和引用中,都展示了使用CASE WHEN套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'
这个例子中,首先判断work_order_no是否为空,如果为空,则进入内层的CASE WHEN语句进行判断。如果2大于1,则返回11,否则返回22。如果work_order_no不为空,则进入外层的CASE WHEN语句进行判断。如果1大于0,则返回33,否则返回66。
类似地,我们可以看引用中的实际使用例子:
SELECT work_order_no, 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
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
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
在这个例子中,根据时间戳的比较结果,进入不同的内层CASE WHEN语句。如果满足条件,返回1,否则返回0。
综上所述,以上是关于CASE WHEN套CASE WHEN的解释和示例。根据具体情况,可以嵌套多个CASE WHEN语句以满足复杂的逻辑需求。
阅读全文