如何在MySQL中使用定义的CASE?

How to use a defined CASE in MySQL?

我定义了一个案例来匹配工作日和整数,如下所示:

CASE weekDayToInt
    WHEN 0 THEN SELECT 'Monday';
    WHEN 1 THEN SELECT 'Tuesday';
    WHEN 2 THEN SELECT 'Wednesday';
    WHEN 3 THEN SELECT 'Thursday';
    WHEN 4 THEN SELECT 'Friday';
    WHEN 5 THEN SELECT 'Saturday';
    WHEN 6 THEN SELECT 'Sunday';
    ELSE BEGIN END;  
END CASE;

如何在此语句中使用它来匹配工作日字符串?

SELECT STR_TO_DATE(CONCAT('2022', weekNumber, 'Monday'), '%X %V %W') INTO appointmentDate;

例如我想在此示例中使用我定义的 CASE 将 'Monday' 替换为 0。

您应该使用正确的语法复习 https://dev.mysql.com/doc/refman/5.7/en/case.html 这看起来很简单

DROP prOCEDURE IF EXISTS P;

delimiter $$

create procedure  p(weekdaytoint int,weeknumber int)
begin
    declare vday varchar(10);
    select
        CASE weekDayToInt
         WHEN 0 THEN  'Monday'
         WHEN 1 THEN  'Tuesday'
         WHEN 2 THEN  'Wednesday'
         WHEN 3 THEN  'Thursday'
         WHEN 4 THEN  'Friday'
         WHEN 5 THEN  'Saturday'
         WHEN 6 THEN  'Sunday'
    end
     into vday;
    
    select weekdaytoint,weeknumber,vday;
    SELECT STR_TO_DATE(CONCAT('2022', weekNumber, vday), '%X %V %W') ;#INTO appointmentDate;
end $$

call p(0,12);

+--------------+------------+--------+
| weekdaytoint | weeknumber | vday   |
+--------------+------------+--------+
|            0 |         12 | Monday |
+--------------+------------+--------+
1 row in set (0.001 sec)

+-----------------------------------------------------------+
| STR_TO_DATE(CONCAT('2022', weekNumber, vday), '%X %V %W') |
+-----------------------------------------------------------+
| 2022-03-21                                                |
+-----------------------------------------------------------+
1 row in set (0.009 sec)

Query OK, 1 row affected (0.016 sec)