SQL Tips : ANSI_NULLS

La seguente query :


SELECT DISTINCT Color from Production.Product
WHERE Color IS NOT NULL;

come sappiamo tutti ritorna la lista dei Color dalla tabella Product non considerando i valori che sono a NULL.

ma se scriviamo la stessa query utilizzando l'operatore di confronto "diverso da" (<>) non otteniamo lo stesso risultato!

SELECT DISTINCT Color from Production.Product
WHERE Color <> NULL;

Questo perchè di default Sql Server ha impostato il flag ANSI_NULLS su ON e quindi non è possibile equiparare i valori a NULL e darà come risultato "unknown”.

Per poter far si che l'operatore "<>" venga considerato bisogna settare il flag ANSI_NULLS OFF in questo modo:


USE AdventureWorks

GO

SET ANSI_NULLS OFF;

SELECT DISTINCT Color from Production.Product
WHERE Color <> NULL;

riferimento : MCTS_70-433 Training Kit MS SQL Server 2008 Database Development

Share

luglio 14, 2010   Posted in: Coding, Programmazione, SQL

Leave a Reply

Security Code: