繁体   English   中英

增加表中所有列的varchar()大小?

[英]Increase varchar() size of all columns in a table?

我们可以通过以下方式修改单列的varchar()大小:

ALTER TABLE *table* MODIFY *column name* VARCHAR(1000);

是否可以对表的所有列发出此命令?

是的,您可以在一个ALTER语句中修改多个列:

ALTER TABLE *table* 
    MODIFY *columnname1* VARCHAR(1000), 
    MODIFY *columnname2* VARCHAR(1000), 
    MODIFY *columnname3* VARCHAR(1000),
    ...etc...;

在一个子句中没有“修改所有varchar列”的语法。

但是您可以生成上面的详细查询:

SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` ',
    GROUP_CONCAT(CONCAT('MODIFY COLUMN `', COLUMN_NAME, '` VARCHAR(1000)')), ';') AS _alter
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_SCHEMA, TABLE_NAME) = ('mydatabase', 'mytable')
  AND COLUMN_TYPE LIKE 'VARCHAR%'
GROUP BY TABLE_SCHEMA, TABLE_NAME;

保存该查询的输出,并将其作为SQL脚本执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM