我正在处理一个混合了NULL
和''
(空)值的数据库。我想将所有空值转换为NULL
。
类似
UPDATE table SET col=NULL WHERE col=''
但是对于整个数据库
注释:
我已将默认值更改为NULL
我很清楚NULL与''辩论,这不是我真正想要讨论的内容(关于SO的其他许多问题)
答案 0 :(得分:2)
可能有一个更好的解决方案,但你总是可以对基数进行mysql转储,然后解析.sql文件,用'NULL替换''。对于解析,你可以使用自定义的php脚本,或者其他一些方式 - 那部分不应该很难:)
答案 1 :(得分:2)
这对我有用:
$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();
}
}
}
答案 2 :(得分:1)
最快的方法可能是使用文本编辑器转储,搜索/替换,然后加载。