• Thanks for the nice question with plenty of knowledge involved, but I've got it just because none of the above made sense for me, and the explanation is not 100% correct as even if we have 5 Null values in the table, the operator EXCEPT will act as explained in BOL:

    EXCEPT returns any distinct values from the left query that are not also found on the right query.

    So it will never ever return 5 rows, if NULL values come to play, there will be just one row with NULL value in it.

    declare @t table (numericColumn int)

    insert into @t values (-10)

    insert into @t values (-9)

    insert into @t values (-8)

    insert into @t values (-7)

    insert into @t values (-6)

    insert into @t values (-5)

    insert into @t values (-4)

    insert into @t values (-3)

    insert into @t values (-2)

    insert into @t values (-1)

    insert into @t values (0)

    insert into @t values (1)

    insert into @t values (2)

    insert into @t values (3)

    insert into @t values (4)

    insert into @t values (5)

    insert into @t values (6)

    insert into @t values (null)

    insert into @t values (null)

    insert into @t values (null)

    insert into @t values (null)

    insert into @t values (null)

    SELECT *

    FROM @t

    EXCEPT

    SELECT *

    FROM @t

    WHERE NOT (NumericColumn BETWEEN -1 AND -10);

    Cheers