Concatenazione di valori NULL

martedì 27 marzo 2012 - 19.34
Tag Elenco Tags  Visual Studio 2010

alexmed Profilo | Guru

Ciao
In una tabella di un db SQL Server Compact 4.0 ho 4 colonne di tipo "int"
In una query aggiungo una colonna che dovrebbe controllarmi il contenuto di queste 4 colonne e se in tutte ho valore NULL allora mi restituisce 'TUTTI' viceversa mi dovrebbe restituire NULL.
Questo è quello che ho scritto:

SELECT ....., CASE WHEN (U06 + U08 + U10 + U12) IS NULL THEN 'TUTTI' END AS Tutti, ...

Il problema è che mi restituisce sempre TUTTI anche se una delle colonne è, ad esempio, 1.

Dove sbaglio?

alexmed

lbenaglia Profilo | Guru

>In una tabella di un db SQL Server Compact 4.0 ho 4 colonne di
>tipo "int"
>In una query aggiungo una colonna che dovrebbe controllarmi il
>contenuto di queste 4 colonne e se in tutte ho valore NULL allora
>mi restituisce 'TUTTI' viceversa mi dovrebbe restituire NULL.
>Questo è quello che ho scritto:
>
>SELECT ....., CASE WHEN (U06 + U08 + U10 + U12) IS NULL THEN
>'TUTTI' END AS Tutti, ...
>
>Il problema è che mi restituisce sempre TUTTI anche se una delle
>colonne è, ad esempio, 1.
>
>Dove sbaglio?

Ciao Alex,

Sbagli nel credere che 1 + NULL sia 1 mentre in realtà è NULL.
Qui trovi spiegato cos'è NULL:
http://msdn.microsoft.com/en-us/library/ms191504.aspx

Per risolvere il tuo problema è sufficiente testare singolarmente ogni colonna nel seguente modo:

SELECT... CASE WHEN ( U06 IS NULL AND U08 IS NULL AND U10 IS NULL AND U12 IS NULL ) THEN 'TUTTI' END AS Tutti ...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

alexmed Profilo | Guru

Ciao,

>Sbagli nel credere che 1 + NULL sia 1 mentre in realtà è NULL.
L'ho immaginato dopo aver visto i risultati.

>Per risolvere il tuo problema è sufficiente testare singolarmente ogni colonna nel seguente modo:
Perfetto.

Grazie.
alexmed
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5