2009-11-06 18 views

Odpowiedz

52

W SQL 2005/2008:

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

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

+0

Chyba masz na myśli ISNULL:) – AdaTheDev

+0

W SQL Server byłby to ISNULL. Nie wiem, czy jest to literówka lub poprawne polecenie w innych dialektach SQL. – Konamiman

+1

OP nie określa: MySQL używa IFNULL – Greg

2

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 
81

lub:

SELECT coalesce(MAX(X), 0) AS MaxX 
FROM tbl 
WHERE XID = 1 
+7

+1 COALESCE jest zgodny z SQL: 1992 – bobince

9

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 
4

Oracle byłoby

SELECT NVL(MAX(X), 0) AS MaxX 
FROM tbl 
WHERE XID = 1; 
3

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