To, czego szukasz, jest rzeczywiście częścią standardów ANSI SQL:92, SQL:1999 i SQL:2003, tj. ograniczenie UNIQUE musi zabraniać powielania wartości innych niż NULL, ale akceptować wiele wartości NULL.
Jednak w świecie Microsoft SQL Server pojedyncza wartość NULL jest dozwolona, ale wiele wartości NULL nie jest...
W SQL Server 2008 , możesz zdefiniować unikalny filtrowany indeks na podstawie predykatu, który wyklucza wartości NULL:
CREATE UNIQUE NONCLUSTERED INDEX idx_yourcolumn_notnull
ON YourTable(yourcolumn)
WHERE yourcolumn IS NOT NULL;
We wcześniejszych wersjach można skorzystać z WIDOKÓW z predykatem NOT NULL, aby wymusić ograniczenie.