mysql - 更改mysql表中的多个列名

标签 mysql sql select alter

我在一个表中有许多名称以 field_t 开头的列,我必须将其更改为 field_c

例如,这是更改其中一列名称的 ALTER TABLE 语句:

ALTER TABLE my_table CHANGE field_t_class field_c_class longtext;

如何更改所有遵循此模式的列,而不是逐一更改?

最佳答案

您可以像这样生成 ALTER

SELECT
    CONCAT(
           'ALTER TABLE ', C.TABLE_NAME, ' CHANGE ', 
           C.COLUMN_NAME, ' ', REPLACE(C.COLUMN_NAME, 'field_t', 'field_c')
           )
FROM
    INFORMATION_SCHEMA.COLUMNS C
WHERE
    C.COLUMN_NAME LIKE 'field[_]t[_]%';

您还需要根据此 CHARACTER_MAXIMUM_LENGTH 添加 DATA_TYPE 等,
NUMERIC_PRECISION、NUMERIC_SCALE、CHARACTER_SET_NAME 和 COLLATION_NAME...

关于mysql - 更改mysql表中的多个列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9002418/

相关文章:

php - 没有错误: Data is not inserting in PHP MySql from Android

PHP 从数据库中解码 JSON 字符串返回 NULL

MySQL:将连接后的多个值组合到一个结果列中

sql - SQL子查询有多少种类型?

php - Mysql SELECT COUNT(*) 或 SELECT 1? PDO

mysql - 在 CakePHP 中使用 FIELD 排序

php - 将 XML 数组解析为 php 变量

sql - Ecto - 表 B 或 C 的表 A 的外键约束,但不是 B 和 C

php - 显示所选项目后的数据

php - 如何在 MYSQL 查询中的另一个计算中立即使用计算结果