22

我有一个stored procedure给我一个输出(我将它存储在一个#temp 表中)并且我正在传递给另一个输出scalar function

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

例如,存储过程具有如下选择语句:

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在声明中应该提到NULL什么0

4

6 回答 6

47

使用coalesce()

select  coalesce(Eprice, 0) as Eprice

仅在 SQL Server 中,您可以使用 保存两个字符isnull()

select  isnull(Eprice, 0) as Eprice
于 2013-05-21T09:57:24.937 回答
8

试试这三种选择:

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 + 任何东西在 T-SQL 中仍然是 NULL。

于 2013-05-21T10:04:15.163 回答
3

尝试ISNULL(Eprice, 0)代替Eprice

于 2013-05-21T09:58:02.593 回答
3

你可以使用这个:

SELECT Ename , Eid , ISNULL(Eprice, 0) as Eprice, Ecountry from Etable
Where Ecountry = 'India'
于 2013-05-21T10:00:09.117 回答
1

CASE WHEN price IS NULL THEN 0 ELSE price END

于 2020-12-18T10:32:25.593 回答
0

还有一个区别,如果你会得到 0 为 "Null or Empty" 字符串使用 coalesce :

select isnull('', 0) as result => ''
select coalesce('', 0) as result => 0

并且都为空值返回 0

select isnull(null, 0) as result => 0
select coalesce(null, 0) as result => 0
于 2020-12-18T10:12:43.017 回答