MySQL中有没有办法自动将空字符串转换为NULL值?

时间:2012-10-24 03:24:34

标签: php mysql

我有一张桌子,我正在尝试添加一个独特的索引。问题是,脚本设置插入数据的方式,偶尔会有一些空字符串而不是NULL

所以,除了更改脚本(我预见有必要,除非有人拯救我!)....是否有任何设置在mysql中自动使用NULL值空字符串是否传递给唯一键?

2 个答案:

答案 0 :(得分:5)

如果您无法修复导入脚本,那么您应该能够在INSERT或UPDATE到达表之前使用触发器进行修补。这样的事情可以解决问题:

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这里指的是 INSERT或UPDATE完成后行的内容,以便您可以查找垃圾值并修复它们。然后,由于这些是BEFORE触发器,因此修补的行将进入数据库。当然,您必须更改表格(your_table)和列(string)名称以适合您的情况。

答案 1 :(得分:0)

尝试类似

的内容
SET sn=NULLIF(sn,NULL);

UPDATE Table
  SET demo = CASE demo = ' ' THEN NULL ELSE demo END,
  ...