2010-04-30 4 views
0

J'ai déjà posé cette question dans ce forum et ils m'ont dit qu'il retournera un jeu de résultats vide. Je veux savoir que si je mets la colonne avec des valeurs nulles, cela retournera-t-il aussi un ensemble de résultats vide? (Remarque: ANSI_NULLS est OFF)"= null" et sélectionnez l'instruction!

SELECT 'A' FROM T WHERE A = NULL; 

Aussi ceci est un exemple que je trouve déroutant:

DECLARE @val CHAR(4) 
SET @val = NULL 
SET ANSI_NULLS ON 

If @val =NULL 
    PRINT ‘TRUE’ 
ELSE 
    PRINT ‘FALSE’ 

SET ANSI_NULLS OFF 

If @val =NULL 
    PRINT ‘TRUE’ 
ELSE 
    PRINT ‘FALSE’ 

Le site que je trouve cet exemple sur est: http://www.sqlservercentral.com/articles/T-SQL/understandingthedifferencebetweenisnull/871/

Répondre

5

Il retournera toujours un ensemble de résultats vide, car rien ne peut jamais égaler NULL. NULL est considéré comme "inconnu", donc même si vous avez fait SELECT 'A' FROM T WHERE NULL = NULL; il retournera un ensemble vide. Si vous voulez vérifier si une colonne est nulle, faites:

SELECT 'A' FROM T WHERE A IS NULL; 
+1

@ user329820 Voir votre autre question, http://stackoverflow.com/questions/2745849/mysql-column-names-and-aliases –

2

Vous avez besoin IS NULL. NULL = NULL est évalué à false dans SQL