SELECTmax (x)返回 null; 如何使它返回0?

如何在运行以下命令时返回0而不是 null:

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

(假设没有行,其中 XID = 1)

126173 次浏览

像这样(对于 MySQL) :

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

对于 MSSQL,使用 ISNULL替换 IFNULL; 对于 Oracle,使用 NVL

在 SQL2005/2008中:

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

这取决于您使用的是什么产品,但大多数支持类似

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

或者

SELECT CASE MAX(X) WHEN NULL THEN 0 ELSE MAX(X) FROM tbl WHERE XID = 1

或:

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

您还可以使用 COALESCE (expression [ ,... n ])-返回第一个非空值,如:

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

神使才是

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

对于 OLEDB,您可以使用以下查询:

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

因为 IFNULL 不在那里工作