MySQL原始查询:使用@var

时间:2013-02-21 11:01:14

标签: mysql var

我正在尝试使用定义为@var:

的常量前缀重命名表列表
SET @p='newprefix_';
RENAME TABLE `oldprefix_tablename1` TO CONCAT(@p, 'tablename1');
RENAME TABLE `oldprefix_tablename2` TO CONCAT(@p, 'tablename2');

这种语法错了,但我明白了:

SELECT  CONCAT(@p, 'tablename'); //outputs newprefix_tablename

这里使用的正确方法/语法是什么?

1 个答案:

答案 0 :(得分:2)

你无法直接按照自己的方式去做。正如手册所说(http://dev.mysql.com/doc/refman/5.1/en/user-variables.html

  

用户变量旨在提供数据值。他们不可能   直接在SQL语句中用作标识符或作为其一部分   标识符,例如在表或数据库名称所在的上下文中   预期的,或作为SELECT等保留字。

你必须使用准备好的陈述:

SET @p = 'newprefix_';
SET @s = CONCAT('RENAME TABLE `oldprefix_tablename1` to ', @p, 'tablename1');
PREPARE stmt FROM @s;
EXECUTE stmt;