Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Interroga SQL Server con IN (NULL) non funzionante

Le uniche operazioni di confronto valide con NULL i valori sono IS NULL o IS NOT NULL , altri restituiscono sempre false (in realtà - Unknown, vedi il commento di @Damien_The_Unbeliever)

Quindi, prova quanto segue

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)