¿Cómo se devuelve 0 en lugar de null cuando se ejecuta el siguiente comando:SELECCIONAR max (x) devuelve nulo; ¿Cómo puedo hacer que vuelva 0?
SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1
(suponiendo que no hay fila donde XID = 1)
¿Cómo se devuelve 0 en lugar de null cuando se ejecuta el siguiente comando:SELECCIONAR max (x) devuelve nulo; ¿Cómo puedo hacer que vuelva 0?
SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1
(suponiendo que no hay fila donde XID = 1)
En SQL 2005/2008:
SELECT ISNULL(MAX(X), 0) AS MaxX
FROM tbl WHERE XID = 1
gusta esta (para MySQL):
SELECT IFNULL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
para MSSQL reemplazar IFNULL
con ISNULL
o para Oracle utilizar NVL
depende de lo que el producto que está utilizando, pero la mayoría de apoyo algo así como
SELECT IFNULL(MAX(X), 0, MAX(X)) AS MaxX FROM tbl WHERE XID = 1
o
SELECT CASE MAX(X) WHEN NULL THEN 0 ELSE MAX(X) FROM tbl WHERE XID = 1
o:
SELECT coalesce(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1
+1 COALESCE cumple con SQL: 1992 – bobince
También puede usar COALESCE (expresión [, ... n]) - devuelve primero no nu te gusta:
SELECT COALESCE(MAX(X),0) AS MaxX
FROM tbl
WHERE XID = 1
Oracle sería
SELECT NVL(MAX(X), 0) AS MaxX
FROM tbl
WHERE XID = 1;
Para OLEDB puede utilizar esta consulta:
select IIF(MAX(faculty_id) IS NULL,0,MAX(faculty_id)) AS max_faculty_id from faculties;
Como IFNULL no funciona allí
Creo que te refieres ISNULL:) – AdaTheDev
En SQL Server sería ISNULL. No sé si es un error tipográfico o un comando válido en otros dialectos SQL. – Konamiman
El OP no especifica: MySQL usa IFNULL – Greg