2013-05-21 19 views
14

Ho uno stored procedure che mi sta dando un'uscita (l'ho memorizzato in una tabella #temp) e quell'uscita sto passando ad un altro scalar function.Invece di NULL come faccio a mostrare '0` nel risultato con l'istruzione SELECT sql?

Invece di NULL come visualizzare 0 nel risultato con istruzione SELECT sql?

Per esempio stored procedure sta avendo dichiarazione prescelta come follwing:

SELECT Ename , Eid , Eprice , Ecountry from Etable 
Where Ecountry = 'India' 

Il che mi sta dando output come

Ename Eid Eprice Ecountry 
Ana  12  452  India 
Bin  33  NULL  India 
Cas  11  NULL  India 

Ora, invece di mostrare NULL come posso mostrare prezzo come 0?

Cosa deve essere menzionato nella dichiarazione SELECT per rendere NULL come 0?

risposta

29

Uso coalesce():

select coalesce(Eprice, 0) as Eprice 

In SQL Server, è possibile salvare due personaggi con isnull():

select isnull(Eprice, 0) as Eprice 
+2

forse questo dovrebbe essere 'selezionare coalesce (Eprice, 0) come Eprice' per preservare il nome della colonna? –

+0

@EdHarper: certo, buona idea. @ashuthinks: Entrambi funzionano allo stesso modo. 'coalesce()' funzionerà in altri database oltre a SQL Server. – Andomar

+0

Ciao Grazie, è meglio usare 1. coalesce (Eprice, 0) '2. isnull (Eprice, 0) – Neo

3

Prova ISNULL(Eprice, 0) invece di Eprice

3

È possibile utilizzare questo:

SELECT Ename , Eid , ISNULL(Eprice, 0) as Eprice, Ecountry from Etable 
Where Ecountry = 'India' 
+2

+1 [Two] (http://en.wikipedia.org/wiki/Boeing_707) [planes] (http://en.wikipedia.org/wiki/Boeing_727) nel nome utente lol – Andomar

+0

Oh sì ... e io Stavo pensando di cambiarlo ^^ – user707727

7

Prova queste tre alternative:

1. ISNULL(MyColumn, 0) 

2. SELECT CASE WHEN MyColumn IS NULL THEN 0 ELSE MyColumn END FROM MyTable 

3. SELECT COALESCE(MyCoumn, 0) FROM MyTable 

C'è un altro modo, ma non è supportato dalla maggior parte dei database SELEZIONA MyColumn + 0 Questo potrebbe funzionare, ma NULL + tutto è ancora NULL in T- SQL.

Problemi correlati