Intereting Posts

Есть ли способ в MySQL для автоматического преобразования пустой строки в значение NULL?

У меня есть таблица, в которую я пытаюсь добавить уникальный индекс. Проблема в том, как настроен скрипт, который вставляет данные, иногда будет некоторая пустая строка вместо NULL .

Таким образом, помимо изменения сценария (который я предвижу, если это необходимо, если кто-то не спасет меня!) …. есть ли какой-либо параметр в mysql, который может автоматически использовать значение NULL если пустая строка передается на уникальный ключ?

Если вы не можете исправить скрипт импорта, вы должны использовать триггер для исправления ошибок до того, как 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 таблиц ( your_table ) и столбцов ( string ) в соответствии с вашей ситуацией.

попробуйте что-нибудь вроде

 SET sn=NULLIF(sn,NULL); 

или

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