Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie SQL Server z IN (NULL) nie działa

Jedyne prawidłowe operacje porównania z NULL wartości to IS NULL lub IS NOT NULL , inne zawsze zwracają fałsz (właściwie - Nieznane, zobacz komentarz @Damien_The_Unbeliever)

Wypróbuj więc następujące

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć tabelę przestawną w Transact/SQL?

  2. SQL Server DATEPART() vs DATENAME() — jaka jest różnica?

  3. Co jest nie tak ze sp_rename z kolumną?

  4. Wiele instrukcji INSERT vs. pojedyncza INSERT z wieloma VALUES

  5. Jak zastąpić NULL pustym ciągiem w SQL?