74

How do you return 0 instead of null when running the following command:

SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1

(Assuming there is no row where XID=1)

Bill the Lizard
  • 386,424
  • 207
  • 554
  • 861
Phillip Senn
  • 44,943
  • 87
  • 252
  • 365

7 Answers7

102

or:

SELECT coalesce(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
HLGEM
  • 91,883
  • 14
  • 110
  • 181
81

In SQL 2005 / 2008:

SELECT ISNULL(MAX(X), 0) AS MaxX
FROM tbl WHERE XID = 1
Phillip Senn
  • 44,943
  • 87
  • 252
  • 365
Nestor
  • 13,260
  • 10
  • 75
  • 115
29

Like this (for MySQL):

SELECT IFNULL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1

For MSSQL replace IFNULL with ISNULL or for Oracle use NVL

Greg
  • 307,243
  • 53
  • 363
  • 328
12

You can also use COALESCE ( expression [ ,...n ] ) - returns first non-null like:

SELECT COALESCE(MAX(X),0) AS MaxX
FROM tbl
WHERE XID = 1
Mark Schultheiss
  • 30,473
  • 11
  • 66
  • 95
5

Oracle would be

SELECT NVL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1;
Jim
  • 81
  • 2
4

For OLEDB you can use this query:

select IIF(MAX(faculty_id) IS NULL,0,MAX(faculty_id)) AS max_faculty_id from faculties;

As IFNULL is not working there

Hassan Ali Shahzad
  • 2,123
  • 22
  • 29
2

Depends on what product you're using, but most support something like

SELECT IFNULL(MAX(X), 0, MAX(X)) AS MaxX FROM tbl WHERE XID = 1

or

SELECT CASE MAX(X) WHEN NULL THEN 0 ELSE MAX(X) FROM tbl WHERE XID = 1
Larry Lustig
  • 47,541
  • 13
  • 102
  • 154