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
luglio 14, 2010
В· admin В· 2 Comments
Posted in: Coding, Programmazione, SQL
2 Responses
Rosalie Z. Barr - giugno 6, 2013
Se i dati includono valori Null, gli operatori logici e di confronto possono restituire potenzialmente un terzo valore, ovvero UNKNOWN, anzichГ© TRUE o FALSE . Questa logica a tre valori, anche se necessaria, ГЁ causa di numerosi errori nelle applicazioni. Nelle tabelle riportate di seguito viene descritto il risultato ottenuto dal confronto tra valori Null.
Nelson Simpson - giugno 7, 2013
Se i dati includono valori Null, gli operatori logici e di confronto possono restituire potenzialmente un terzo valore, ovvero UNKNOWN, anzichГ© TRUE o FALSE . Questa logica a tre valori, anche se necessaria, ГЁ causa di numerosi errori nelle applicazioni. Nelle tabelle riportate di seguito viene descritto il risultato ottenuto dal confronto tra valori Null.
Leave a Reply