文章目录
一、怎么转换?
很多的时候我们在写mysql程序时会遇到这种情况:将表名(其实就是字符串)作为函数的参数传入使用,但是Sql语法只识别字符串而不是其的内容,那么我们就应该使用一个叫concat()的字符串拼接函数。
二、concat()使用原理
concat()函数通常用来将多个字符串连接成一个字符串。
我们可以把我们的代码转换成字符串与想要用到的字符串拼接到一起,然后按照sql语句执行。
当然需要配合动态SQL语句来实现此功能。例如:
set table_name = 'users';
set @sql = conect('select* from ', table_name);
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
该代码是使用了table_name来保存表名users(正常可以传入),然后使用concat()函数将select* from与table_name连接起来,也就是select* from table_name,并创建了一个会话变量sql储存这句sql语句。接下来是固定搭配,perpare准备语句,execute执行,deallocate释放。
但是值得注意的是:prepare语句不能接受局部变量
concat()函数也可以连续拼,如:
#select * from student limit nOffset, nCount;(预期语句)
set @sql = concat("select * from ", tableName, " limit ", nOffset, ",", nCount);
prepare prod from @sql;
execute prod;
deallocate prepare prod;
总结
这就是我大概的理解,之前做题的时候网上说的都语无伦次的,没有太清楚的,例子也都是翻来覆去。所以我记录一下。