码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 动态sql语句执行 用时间做表名

时间:2015-07-16 09:48:48      阅读:1276      评论:0      收藏:0      [点我收藏+]

标签:mysql   动态sql语句执行   修改表名   时间表名   

1. 描述

  在使用数据的时候,我时候我们需要很多数据库,而且想用时间来做表名以区分。但是MySQL在存储过程中不支持使用变量名来做表名或者列名。
  比如,有一个表我们想以“2015-07-16 12:00:00”命名。


2. 解决方案

  如果只是更换一个普通的表名的话,很简单,直接使用下面sql语句即可:
  alter table old_table_name rename new_table_name
  但是要以时间为表名,动态命名的话就不可以了。首先我们可以用NOW()函数获取系统当前的时间。要寻求支持动态以变量的形式做数据库操作的方法,在MySQL5.1以上的版本中,prepare语句可以支持这样的操作。
  我们可以用set @var=...设置变量,然后用prepare stml from @var设置动态sql语句,最后用EXECUTE stml;执行语句。
  下面是以时间为表名,动态修改一个表的sql执行过程:
  

set @asql=concat(‘alter table old_table_name rename `‘,NOW(),‘`‘);
prepare stml from @asql;
EXECUTE stml;

  这里使用到了MySQL中concat函数,此函数的作用是字符串拼接。相信懂得编程的同学对此都不陌生。
  使用方法:
  concat(str1,str2,…)

  返回结果为连接参数产生的字符串。注意如有任何一个参数为NULL ,则返回值为 NUL。
  附一张结运行果图:
  技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

MySQL 动态sql语句执行 用时间做表名

标签:mysql   动态sql语句执行   修改表名   时间表名   

原文地址:http://blog.csdn.net/jeanphorn/article/details/46902369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!