在sql查询中使用变量

时间:2017-04-26 23:27:10

标签: mysql sql phpmyadmin mariadb

如果我有以下变量:

@q='minute'
@r=5

如何在查询中使用它们,以便形成以下内容:

select CURRENT_TIME - interval 5 minute;

我尝试了以下但是不起作用:

select CURRENT_TIME - interval @r @q;

1 个答案:

答案 0 :(得分:0)

您必须使用预准备语句来创建动态查询:

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将包含时间计算的结果。

更新:准备好的语句不适用于触发器,但如果case when只有minutehour,则可以使用标准@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将包含时间计算的结果。