I ran into code similar to this today.
SELECT AuditDomain, ObjectId, AuditSubdomain = CONVERT(VARCHAR(50), NULL), SubDomainObjectId = CONVERT(IN
Of couse NULL has data type. Try next code to confirm:
SELECT CAST(NULL AS date) AS c1, CAST(NULL AS time) AS c2 INTO #x; EXEC tempdb..sp_columns '#x';
And i think that there is bug in SQL_VARIANT implementation because it lossing information about NULL type. Too bad!