Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用正则表达式重命名多个MySQL列?_Mysql_Sql - Fatal编程技术网

是否可以使用正则表达式重命名多个MySQL列?

是否可以使用正则表达式重命名多个MySQL列?,mysql,sql,Mysql,Sql,我有一个mysql数据库,其中包含多个表,这些表的列名类似于somename\u fr,用于存储不同语言的翻译 我需要将它们重命名为somename\u fr\u CA,所以只需添加_CA部分 这是否可以通过一个将一次更新它们的查询来实现 $tableFields = array(); $result = mysql_query("SHOW COLUMNS FROM mytable"); if (mysql_num_rows($result) > 0) { while ($row

我有一个mysql数据库,其中包含多个表,这些表的列名类似于somename\u fr,用于存储不同语言的翻译

我需要将它们重命名为somename\u fr\u CA,所以只需添加_CA部分

这是否可以通过一个将一次更新它们的查询来实现

$tableFields = array();
$result = mysql_query("SHOW COLUMNS FROM mytable");
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        if(substr($row['Field'], -3) == "_fr") {
            mysql_query("alter table tablename change `".$row['Field']."` `".$row['Field']."_CA`) ;
        }
    }
}
为什么要使用正则表达式?只需使用
SHOW COLUMNS
查询并循环结果,找出需要重命名的表名,然后执行查询。在循环中,我使用substr获取字段名的最后3个字符,如果它们等于“\u fr”,则会触发另一个SQL查询:
ALTER TABLE

资源:

  • 列出mysql表字段
  • substr()mysql
  • 更改表格:

  • 谢谢设计师在这里,所以有限的知识和思想正则表达式的模式匹配。