将字符串分配给已定义的变量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
,然后再次打开该语句。而已。