Как делают Вы возвращаетесь 0 вместо пустого указателя при выполнении следующей команды:
SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1
(Принимающий нет никакой строки где XID=1),
В SQL 2005 / 2008:
SELECT ISNULL(MAX(X), 0) AS MaxX
FROM tbl WHERE XID = 1
или:
SELECT coalesce(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
Как это (для MySQL):
SELECT IFNULL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
Для замены MSSQL IFNULL
с ISNULL
или для использования Oracle NVL
Можно также использовать, ОБЪЕДИНЯЮТ (выражение [... n]) - возвращает первый непустой указатель как:
SELECT COALESCE(MAX(X),0) AS MaxX
FROM tbl
WHERE XID = 1
Oracle была бы
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 не работает там
Зависит, на каком продукте Вы используете, но большая часть поддержки что-то как
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