SELECT max (x) возвращает null; как я могу заставить его вернуться 0? Как вы возвращаете 0 вместо null при запуске следующей команды: SELECT MAX(X) AS MaxX FROM tbl WHERE XID = 1 (Предполагая, что нет строки, где XID = 1) Ответ 1 В SQL 2005/2008: SELECT ISNULL(MAX(X), 0) AS MaxX FROM tbl WHERE XID = 1 Ответ 2 или SELECT coalesce(MAX(X), 0) AS MaxX FROM tbl WHERE XID = 1 Ответ 3 Подобно этому (для MySQL): SELECT IFNULL(MAX(X), 0) AS MaxX FROM tbl WHERE XID = 1 Для MSSQL замените IFNULL на ISNULL или для Oracle используйте NVL Ответ 4 Вы также можете использовать COALESCE (выражение [,... n]) - возвращает сначала не null, как: SELECT COALESCE(MAX(X),0) AS MaxX FROM tbl WHERE XID = 1 Ответ 5 Oracle будет SELECT NVL(MAX(X), 0) AS MaxX FROM tbl WHERE XID = 1; Ответ 6 Для OLEDB вы можете использовать этот запрос: select IIF(MAX(faculty_id) IS NULL,0,MAX(faculty_id)) AS max_faculty_id from faculties; Поскольку IFNULL не работает там Ответ 7 В зависимости от того, какой продукт вы используете, но большинство поддерживают что-то вроде 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
Ответ 3 Подобно этому (для MySQL): SELECT IFNULL(MAX(X), 0) AS MaxX FROM tbl WHERE XID = 1 Для MSSQL замените IFNULL на ISNULL или для Oracle используйте NVL
Ответ 4 Вы также можете использовать COALESCE (выражение [,... n]) - возвращает сначала не null, как: SELECT COALESCE(MAX(X),0) AS MaxX FROM tbl WHERE XID = 1
Ответ 6 Для OLEDB вы можете использовать этот запрос: select IIF(MAX(faculty_id) IS NULL,0,MAX(faculty_id)) AS max_faculty_id from faculties; Поскольку IFNULL не работает там
Ответ 7 В зависимости от того, какой продукт вы используете, но большинство поддерживают что-то вроде 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