2009-11-06 2 views

Répondre

52

Dans SQL 2005/2008:

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

Vous aimez cette (pour MySQL):

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

pour MSSQL remplacer IFNULL avec ISNULL ou pour Oracle utiliser NVL

+0

Je pense que vous voulez dire ISNULL: – AdaTheDev

+0

Dans SQL Server, il serait ISNULL. Je ne sais pas s'il s'agit d'une faute de frappe ou d'une commande valide dans d'autres dialectes SQL. – Konamiman

+1

L'OP ne spécifie pas: MySQL utilise IFNULL – Greg

2

dépend de ce produit que vous utilisez, mais la plupart quelque chose de soutien comme

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

ou

SELECT CASE MAX(X) WHEN NULL THEN 0 ELSE MAX(X) FROM tbl WHERE XID = 1 
81

ou:

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

+1 COALESCE est conforme à la norme SQL: 1992 – bobince

9

Vous pouvez également utiliser COALESCE (expression [, ... n]) - renvoie d'abord non-nu ll comme:

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

Oracle serait

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

OLEDB vous pouvez utiliser cette requête:

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

Comme IFNULL ne fonctionne pas, il

Questions connexes