我有一个表(它是从 Excel 导入的),其中包含各种自动识别/分配的类型(整数、 float 、小数等)。大约有 160 列...我想将它们标准化。我知道要更改字段类型,我使用 ALTER TABLE 和 CHANGE 命令...但是您必须指定列名...而且我真的不想为每一列单独执行此操作。我试过这样的事情:
ALTER TABLE `Table_Name` CHANGE * * DECIMAL( 7, 4 ) NULL DEFAULT NULL
但这没有用。使事情稍微复杂一点……实际上有一个字段是主键 StateName
,它不是数字(值类似于 TX、VA、FL、NY)……我做需要别管它。
简而言之,我正在寻找类似的东西:
ALTER TABLE `Table_Name` CHANGE * * DECIMAL( 7, 4 ) NULL DEFAULT NULL EXCEPT WHERE Column='StateName'
我只是编造了那个语法......我知道它离得很远。
这可以做到吗?
最佳答案
所以...基于来自 OMG Ponies 的“答案”并假设在 MySQL 中确实没有办法做到这一点...我编写了以下 PHP 脚本,它在不到 1 秒的时间内完成了整个工作。 ..
$sql = "SHOW COLUMNS FROM `Table_Name`";
$result = @mysql_query($sql, $db);
while($row = mysql_fetch_array($result)){
$ColumnName = $row[0];
if($ColumnName!='StateName'){
$UpdateSql = "ALTER TABLE `Table_Name` CHANGE `$ColumnName` `$ColumnName` DECIMAL( 7, 4 ) NULL DEFAULT NULL ";
@mysql_query($UpdateSql, $db);
}
}
希望有一天它能帮助到其他人。
关于mysql - 在 MySQL 中同时更改多个字段类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7925210/