mysql中
定义变量
 DECLARE TABLENAME VARCHAR(50);
set TABLENAME=CONCAT('log','_',SUBSTRING('2010-01-02',6,2),RIGHT(parDate,2));
select * from TABLENAME;
说这个表名是无效的,该如何改呢?

解决方案 »

  1.   

    MySQL中表名没有办法为变量名。只能通过 PREPARE/ EXECUTE 来执行动态生成的SQL语句。set @sql=CONCAT('select * from log','_',SUBSTRING('2010-01-02',6,2),RIGHT(parDate,2));
    PREPARE stmt1 FROM @sql;
    EXECUTE stmt1 ;
    DEALLOCATE PREPARE stmt1;
      

  2.   

    mysql直接用变量表名没用过,可以用ibatis这种持久层来使用变量表名,比如散列表的应用
      

  3.   

    预处理语句prepare正解,拼接成可执行的字符串执行。
      

  4.   


    只能用字符串累加生成SQL语句,再动态执行