如何在运行以下命令时返回0而不是 null:
SELECT MAX(X) AS MaxX FROM tbl WHERE XID = 1
(假设没有行,其中 XID = 1)
像这样(对于 MySQL) :
SELECT IFNULL(MAX(X), 0) AS MaxX FROM tbl WHERE XID = 1
对于 MSSQL,使用 ISNULL替换 IFNULL; 对于 Oracle,使用 NVL
ISNULL
IFNULL
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 不在那里工作