• Moreover, a simple SELECT into a variable without a table is optimized as equivalent to a SET, so in the following example, only the third variation returns the expected NULL:

    DECLARE @SetOpt INT, @SelOpt INT, @SetSelOpt INT

    Set FMTONLY ON;

    SET @SetOpt = @@OPTIONS

    SELECT @SelOpt = @@OPTIONS

    SET @SetSelOpt = (SELECT @@OPTIONS)

    Set FMTONLY OFF;

    SELECT @SetOpt AS SetOpt, @SelOpt AS SelOpt, @SetSelOpt AS SetSelOpt

    Therefore, for maximum readability and predictability, I now use @t.ovod-everett simple suggestion:

    DECLARE @NullIfFmtOnly INT = (SELECT 1);

    or if you need it to work in 2005 and earlier:

    DECLARE @NullIfFmtOnly INT SET @NullIfFmtOnly = (SELECT 1)