ВЫБЕРИТЕ макс. (x), возвращает пустой указатель; как я могу заставить его возвратиться 0?

Как делают Вы возвращаетесь 0 вместо пустого указателя при выполнении следующей команды:

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

(Принимающий нет никакой строки где XID=1),

62
задан 6 November 2009 в 19:48

7 ответов

В SQL 2005 / 2008:

SELECT ISNULL(MAX(X), 0) AS MaxX
FROM tbl WHERE XID = 1
70
ответ дан 31 October 2019 в 13:09

или:

SELECT coalesce(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
91
ответ дан 31 October 2019 в 13:09

Как это (для MySQL):

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

Для замены MSSQL IFNULL с ISNULL или для использования Oracle NVL

26
ответ дан 31 October 2019 в 13:09

Можно также использовать, ОБЪЕДИНЯЮТ (выражение [... n]) - возвращает первый непустой указатель как:

SELECT COALESCE(MAX(X),0) AS MaxX
FROM tbl
WHERE XID = 1
10
ответ дан 31 October 2019 в 13:09

Oracle была бы

SELECT NVL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1;
5
ответ дан 31 October 2019 в 13:09

Для OLEDB можно использовать этот запрос:

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

, Поскольку IFNULL не работает там

4
ответ дан 31 October 2019 в 13:09

Зависит, на каком продукте Вы используете, но большая часть поддержки что-то как

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
2
ответ дан 31 October 2019 в 13:09

Другие вопросы по тегам:

Похожие вопросы: