J'ai la table SQL suivante:SQL Server - la sélection d'une ligne ne renvoie aucune valeur NULL. Pourquoi?
CREATE TABLE [dbo].[Test](
[TestID] [int] NOT NULL,
[TestNum] [int] NULL,
[TestReason] [varchar](50) NULL
)
Alors TestNum un INT qui permet NULL valeurs, et je l'ai inséré beaucoup de données dans la table, dont quelques-uns des lignes contiennent une valeur NULL pour TestNum
Si je lance alors la requête suivante
select *
from Test
where TestNum != 123
La requête aboe ne renvoie aucune ligne ayant une valeur NULL. Je m'attendrais à ce qu'il renvoie toutes les lignes SAUF celles qui ont la valeur 123.
Pourquoi est-ce?
Je cours cette requête sur une base de données MS-SQL 2000, importée dans MS SQL 2005. Est-ce que cela a un effet? Ou est ce comportement standard pour toutes les versions de MS SQL Server?
+1 pour explication – RedFilter
+1. Ajouter: Ce n'est pas SQL Server qui le fait - c'est la sémantique trinaire SQL standard, la même chose sur tous les serveurs SQL. Donc, personne ne blâme Microsoft pour cela. – TomTom
Thnx Strommy, TomTom et tout le monde. Cela a du sens, même si je ne suis toujours pas d'accord sur une telle mise en œuvre/définition. –