• I find it very useful to use NULLs in temporary tables during ETL.
    Say for example I have a key, value table but the values might come from different sources but I know my full set of keys. I might want to load all the keys I know I should have values for into a temp table and then have multiple statements getting the values from various sources. I can then check for remaining Nulls before I do the final move from the temp table to a table that might not allow nulls and handle the missing values appropriately. it's easier to analyse all the missing values at the end and potentially report back to the user the missing data in one go.
    What really grinds my gears is when someone decides that they're not going to allow NULLs but decide that -1 (or some other weird value) will effectively be a NULL value in the table. Perhaps there is some weird reason for doing this now and again, but it annoys me!