http://dev.mysql.com/doc/refman /5.0/en/create-index.html
"Un indice UNIQUE crea un vincolo tale che tutti i valori nell'indice devono essere distinti. Si verifica un errore se si tenta di aggiungere una nuova riga con un valore chiave che corrisponda a una riga esistente. Questo vincolo non si applica ai valori NULL ad eccezione del Motore di archiviazione BDB. Per altri motori, un indice UNIQUE consente più valori NULL per colonne che possono contenere NULL."
Quindi, no, non puoi fare in modo che MySQL tratti NULL come un valore univoco. Immagino che tu abbia un paio di scelte:potresti fare ciò che hai suggerito nella tua domanda e memorizzare un "valore speciale" invece di null, oppure potresti usare il motore BDB per la tabella. Tuttavia, non credo che questa piccola differenza di comportamento giustifichi una scelta insolita del motore di archiviazione.