Jak zwraca 0 zamiast NULL gdy uruchamiając następującą komendę:SELECT max (x) zwraca zero; jak mogę go zwrócić 0?
SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1
(Zakładając, że nie ma wiersz gdzie XID = 1)
Jak zwraca 0 zamiast NULL gdy uruchamiając następującą komendę:SELECT max (x) zwraca zero; jak mogę go zwrócić 0?
SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1
(Zakładając, że nie ma wiersz gdzie XID = 1)
W SQL 2005/2008:
SELECT ISNULL(MAX(X), 0) AS MaxX
FROM tbl WHERE XID = 1
tak (MySQL):
SELECT IFNULL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
dla MSSQL zastąpić IFNULL
z ISNULL
lub Oracle używać NVL
Zależy jaki produkt używasz, ale większość wsparcie coś
SELECT IFNULL(MAX(X), 0, MAX(X)) AS MaxX FROM tbl WHERE XID = 1
lub
SELECT CASE MAX(X) WHEN NULL THEN 0 ELSE MAX(X) FROM tbl WHERE XID = 1
lub:
SELECT coalesce(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
+1 COALESCE jest zgodny z SQL: 1992 – bobince
Można również wykorzystać COALESCE (wyrażenie [, ... n]) - zwraca pierwsze nie-nu ll jak:
SELECT COALESCE(MAX(X),0) AS MaxX
FROM tbl
WHERE XID = 1
Oracle byłoby
SELECT NVL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1;
Dla OLEDB można użyć tej kwerendy:
select IIF(MAX(faculty_id) IS NULL,0,MAX(faculty_id)) AS max_faculty_id from faculties;
As IFNULL nie działa tam
Chyba masz na myśli ISNULL:) – AdaTheDev
W SQL Server byłby to ISNULL. Nie wiem, czy jest to literówka lub poprawne polecenie w innych dialektach SQL. – Konamiman
OP nie określa: MySQL używa IFNULL – Greg