La comparaison de deux variables dans SQL

Permet de dire que vous avez le code suivant:

DECLARE @A INT = 1,
        @B INT = NULL;

IF (@B != @A)
    SELECT 1;
ELSE IF (@B = @A)
    SELECT 2;
ELSE
    SELECT 3;

Comme vous pouvez le voir variable @A est égal à '1' pour vous et variable @B n'est certainement pas. Je suis l'exécution de cette partie de code dans Microsoft SQL Server Management Studio 2014 et je suis de '3' comme résultat. Cela signifie que @A n'est pas le même que @B, mais c'est pas non plus différent que @B. Comment est-ce même possible? Ce qui me manque ici?

Il vous manque une compréhension de NULL valeurs. Presque toute comparaison avec NULL retourne NULL, qui est considérée comme fausse. Cette question est abordée à la fois dans le matériel d'apprentissage sur SQL, de la documentation, et dans d'autres Débordement de Pile questions.
Une autre bonne/est cool de connaître et de comprendre au sujet de la comparaison avec NULL valeurs peuvent être trouvées dans ce génial réponse ici.
La seule façon de comparer la valeur NULL est avec le IS NULL/IS NOT NULL opérateurs
Merci, je suppose que j'ai raté quelques trucs de base. =/

OriginalL'auteur msmolcic | 2015-08-12