在 sql 查询中使用变量

Use variables within sql query

如果我有以下变量:

@q='minute'
@r=5

我如何在查询中使用它们以形成以下形式:

select CURRENT_TIME - interval 5 minute;

我已经尝试了以下但它不起作用:

select CURRENT_TIME - interval @r @q;

您必须使用准备好的语句来创建这样的动态查询:

set @q='minute';
set @r=5;
set @sql = concat("select CURRENT_TIME - interval ",@r," ", @q, " into @result_var;");

prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;

select @result_var;

变量@result_var将包含时间计算的结果。

更新: 准备好的语句在触发器上不可用,但如果只有 minutehour,则可以使用标准 case when 语句@q变量:

-- procedure body

set @q='hour';
set @r=5;

set @result_var = 0;

case  
    when @q = 'minute' then
      select CURRENT_TIME - interval @r minute into @result_var;
    when @q = 'hour' then
      select CURRENT_TIME - interval @r hour into @result_var;
end case;

select @result_var;

-- end procedure body

同样:变量@result_var将包含时间计算的结果。