我正在处理一个数据库,其中有NULL
和''
(空)值的混合。我想将所有空值转换为NULL
。MySQL:整个数据库,将[空]值转换为NULL
喜欢的东西
UPDATE table SET col=NULL WHERE col=''
而且对整个数据库
笔记:
我已经改变了默认值设为NULL
我很清楚空VS'的争论,这是不是我真的想进入(很多其他的问题,对SO为)
我正在处理一个数据库,其中有NULL
和''
(空)值的混合。我想将所有空值转换为NULL
。MySQL:整个数据库,将[空]值转换为NULL
喜欢的东西
UPDATE table SET col=NULL WHERE col=''
而且对整个数据库
笔记:
我已经改变了默认值设为NULL
我很清楚空VS'的争论,这是不是我真的想进入(很多其他的问题,对SO为)
这为我工作:
$tables = {array of table names};
foreach($tables as $t){
$cols = FALSE;
$q = "SELECT * FROM $t LIMIT 1";
$res = mysql_query($q);
while ($r = mysql_fetch_array($res, MYSQL_ASSOC)){
$cols = array_keys($r);
}
if($cols){
foreach($cols as $c){
$q2 = "UPDATE $t SET $c=NULL WHERE $c = ''";
mysql_query($q2);
echo mysql_error();
}
}
}
可能的最快方法只是转储,使用文本编辑器搜索/替换,然后加载。
有可能是一个更好的解决方案,但你总是可以做一个基地的mysql转储,然后解析.sql文件,用NULL替换''。为了解析,您可以用定制的PHP脚本,或者一些其他的方式 - 这部分应该不难:)
你的意思是'山坳= NULL'。 – 2010-11-05 12:49:56
有几张桌子?是否有理由不能复制/粘贴上述语句并更改每个表的表名?如果没有理由变得复杂......不要。 – 2010-11-05 12:50:18
@Justin说什么。这可能可以使用'INFORMATION_SCHEMA'来完成,但是如果它不是一个重复的任务,请快速复制并粘贴 – 2010-11-05 12:51:00