如何在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)
我定义了一个案例来匹配工作日和整数,如下所示:
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)