我有一个表,我想唯一索引增加。问题是,脚本设置一个插入的数据,就会出现有时,一些空字符串,而不是NULL
的方式。有没有办法在MySQL中自动将空字符串转换为NULL值?
那么,除了改变脚本(我预见是必要的,除非有人为我节省了!)......有没有在MySQL中,可以自动使用NULL
值,如果一个空字符串通过传递给任何设置独特的钥匙?
我有一个表,我想唯一索引增加。问题是,脚本设置一个插入的数据,就会出现有时,一些空字符串,而不是NULL
的方式。有没有办法在MySQL中自动将空字符串转换为NULL值?
那么,除了改变脚本(我预见是必要的,除非有人为我节省了!)......有没有在MySQL中,可以自动使用NULL
值,如果一个空字符串通过传递给任何设置独特的钥匙?
如果你不能修复导入脚本,那么你应该能够使用触发器的INSERT之前把事情加以补救或更新到桌子。这样的事情应该做的伎俩:
delimiter $$
create trigger nullify_blanks_ins before insert on your_table
for each row begin
if new.string = '' then
set new.string = null;
end if;
end;
$$
create trigger nullify_blanks_upd before update on your_table
for each row begin
if new.string = '' then
set new.string = null;
end if;
end;
$$
delimiter ;
new
这里指的是该行的样子插入或更新完成后,这样你可以看看垃圾值和解决这些问题。然后,因为这些是BEFORE触发器,所以你修补过的行将进入数据库。你会,当然,要改变表(your_table
)和列(string
)的名字,以满足您的具体情况。
尝试像
SET sn=NULLIF(sn,NULL);
或
UPDATE Table
SET demo = CASE demo = ' ' THEN NULL ELSE demo END,
...
你会不会有下降的唯一索引,插入数据,做你的更新,那么这个工作重新添加唯一索引? –
@ muistooshort不,如果独特的索引就位,你甚至不会有多个空字符串.... –
该解决方案确实是在更新,你也许可以套用概念:http://stackoverflow.com/questions/3238319/how-do-i-change-all-empty-strings-to-null-in-一个表 –
还能出什么设置表,明智的,或者这是'做正确的第一时间的情况下,你不会有这样的problem'ology –
你为什么不这样做的其他方式,禁止null并将缺省值设置为空字符串? – sn00k4h