将字符串分配给已定义的变量isWeekdays


set @isWeekdays='calendar.monday=1 AND calendar.tuesday=1 AND calendar.wednesday=1 AND calendar.thursday=1 AND calendar.friday=1';


我希望变量isWeekdays可以在执行查询时替换为字符串,例如,


SELECT * FROM calendar WHERE @isWeekdays;

-- expect to
SELECT * FROM calendar WHERE calendar.monday=1 AND calendar.tuesday=1 AND calendar.wednesday=1 AND calendar.thursday=1 AND calendar.friday=1;


但是,它不会生效。

最佳答案

@isWeekdays在查询中将评估为数值,您必须使用一条语句并将其用作动态查询:

-- setting the @isWeekdays variable
set @isWeekdays='calendar.monday=1 AND calendar.tuesday=1
     AND calendar.wednesday=1 AND calendar.thursday=1
      AND calendar.friday=1';


-- using the @isWeekdays variable in dynamic query
set @sql = concat('SELECT * FROM calendar WHERE ',@isWeekdays);
prepare stmt1 FROM @sql;
execute stmt1;
-- you muyst close the prepared statement
deallocate prepare stmt1;


您可以在同一会话中更改@isWeekdays,然后再次打开该语句。

而已。

09-30 17:02
查看更多