Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Interroger SQL Server avec IN (NULL) ne fonctionne pas

Les seules opérations de comparaison valides avec NULL les valeurs sont IS NULL ou IS NOT NULL , les autres retournent toujours faux (en fait - Inconnu, voir le commentaire de @Damien_The_Unbeliever)

Alors, essayez ce qui suit

CREATE TYPE [dbo].[BitType] AS TABLE(
    [B] [tinyint] NOT NULL
)
GO
declare @theBitTypeTable BitType

insert @theBitTypeTable
VALUES(0), (2 /* instead of NULL*/)

SELECT something FROM theTable WHERE IsNull(cast(item as tinyint), 2) IN (select B from @theBitTypeTable)