2013-05-21 13 views
14

Mam jeden stored procedure, który daje mi dane wyjściowe (zapisałem je w tabeli #temp) i ten wynik przechodzę do innego scalar function.Zamiast NULL jak wyświetlić `0` w wyniku instrukcji SELECT sql?

Zamiast NULL w jaki sposób wyświetlić 0 w wyniku instrukcji SELECT sql?

Na przykład przechowywane proc jest posiadanie select jak follwing:

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

Który daje mi moc jak

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

Teraz zamiast pokazując NULL jak mogę pokazać cenę jako 0?

Co należy wymienić w oświadczeniu SELECT, aby wykonać NULL jako 0?

Odpowiedz

29

Zastosowanie coalesce():

select coalesce(Eprice, 0) as Eprice 

W SQL Server tylko można zapisać dwa znaki z isnull():

select isnull(Eprice, 0) as Eprice 
+2

Być może powinno to być 'select coalesce (Eprice, 0) as Eprice', aby zachować nazwę kolumny? –

+0

@EdHarper: Jasne, dobry pomysł. @ashuthinks: Oba działają tak samo. 'coalesce()' będzie działać w innych bazach danych oprócz SQL Server. – Andomar

+0

Cześć Dzięki, które lepiej jest użyć 1. koalesce (Eprice, 0) '2. isnull (Eprice, 0) – Neo

3

Spróbuj ISNULL(Eprice, 0) zamiast Eprice

3

Można użyć tego:

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

+1 [Two] (http://en.wikipedia.org/wiki/Boeing_707) [samoloty] (http://en.wikipedia.org/wiki/Boeing_727) w nazwie użytkownika lol – Andomar

+0

O tak ... i ja myślałem o zmianie tego ^^ – user707727

7

Spróbuj trzy alternatywy:

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 

Jest też inny sposób, ale to nie jest obsługiwany przez większość baz SELECT MyColumn + 0 To może działać, ale NULL + coś jeszcze NULL w T- SQL.

Powiązane problemy