PDA

View Full Version : [SQL] SELECT MAX(id) - voglio che ritorni 0 in caso non ci siano tuple


Dark Phoenix
17-06-2008, 13:26
Ciao a tutti,

Per motivi che non sto a spiegare vorrei che una query del tipo:
SELECT MAX (id)
FROM t;

ritorni 0 nel caso non siano presenti tuple nella relazione t, logicamente in questo caso la funzione max ritorna "null", come poi č giusto che sia. Mentre a me serve che ritorni 0.

Il vincolo che debbo seguire :read: č che l'eventuale sistema di traduzione da "null" a 0 deve restare in SQL standard o comunque essere molto aderente allo standard.:(
Non posso aggirare l'ostacolo aggiungendo una tupla fittizia con id=0. :cry:

Grazie a tutti per l'aiuto

gugoXX
17-06-2008, 14:03
Quasi tutti gli Engine hanno la funzione CASE.

Potresti quindi fare:


SELECT CASE WHEN MAX(pippo) IS NULL THEN 0 ELSE MAX(pippo) END AS max_pippo
FROM tabella

Riordian
17-06-2008, 15:54
pių semplicemente
potrebbe funzionare pure cosė

SELECT ISNULL(MAX(id),0)
FROM tabella


;)

gugoXX
17-06-2008, 16:18
pių semplicemente
potrebbe funzionare pure cosė

SELECT ISNULL(MAX(id),0)
FROM tabella


;)


gia', ma ISNULL e' meno standard.
Sotto Oracle e' NVL
Sotto MySql c'e' una IsNull ma fa qualcosa di diverso (ritorna true o false)

Riordian
17-06-2008, 16:31
gia', ma ISNULL e' meno standard.
Sotto Oracle e' NVL
Sotto MySql c'e' una IsNull ma fa qualcosa di diverso (ritorna true o false)

infatti il potrebbe era dovuto proprio al fatto che poteva non soddisfare appieno la sua richiesta rispetto al codice suggerito da te ;)

Dark Phoenix
18-06-2008, 07:26
Grazie č perfetto :)