2013-05-21 46 views
14

我有一个stored procedure这是给我一个输出(我把它存储在一个#temp表中),并且我输出到另一个scalar function而不是NULL如何在SELECT语句sql的结果中显示'0'?

而不是NULL如何在结果中显示0 SELECT语句sql?

例如存储过程是有Select语句,如follwing:

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

这是给我的输出像

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

而不是显示NULL现在我该怎么让价格作为0

SELECT声明中应该提及NULL0

回答

29

使用coalesce()

select coalesce(Eprice, 0) as Eprice 

在SQL Server只,你可以节省两个字符与isnull()

select isnull(Eprice, 0) as Eprice 
+2

也许这应该是'选择coalesce(Eprice,0)作为Eprice'来保存列名? –

+0

@ EdHarper:当然,好主意。 @ashuthinks:两者工作相同。 'coalesce()'可以在SQL Server以外的其他数据库中工作。 – Andomar

+0

嗨,谢谢哪个更好用1. coalesce(Eprice,0)'2. isnull(Eprice,0) – Neo

3

尝试ISNULL(Eprice, 0)代替Eprice

3

您可以使用此:

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

+1 [Two](http://en.wikipedia.org/wiki/Boeing_707)[飞机](http://en.wikipedia.org/wiki/Boeing_727)在你的用户名lol – Andomar

+0

哦,是啊..和我正在考虑改变它^^ – user707727

7

尝试这些三种选择:

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 

还有另一种方式,但它不支持大部分的数据库 SELECT MyColumn + 0 这可能会实现,但NULL +什么仍然是NULL在T- SQL。

相关问题