Supponiamo la seguente tabella (ad esempio a seguito di diversi inner join dichiarazioni):MySQL: NULL Typecasting a 0
id | column_1 | column_2
------------------------
1 | 1 |
2 | 2 | 2
3 | | 3
che si poteva per esempio ottenere dal seguente dichiarazione:
select a.id, t1.column_1, t2.column_2
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id
Ora, se mi piacerebbe riassumere t1.column_1 e t2.column_2 come segue
select
a.id,
t1.column_1,
t2.column_2,
(t1.column_1 + t2.column_2) as cumulated
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id
Il reslut sarà il seguente:
id | column_1 | column_2 | cumulated
------------------------------------
1 | 1 | NULL | NULL
2 | 2 | 2 | 4
3 | NULL | 3 | NULL
La mia domanda è fondamentalmente: c'è un modo per digitare NULL in 0 per fare un po 'di matematica?
Ho provato CONVERT(t1.column_1, SIGNED)
e CAST(t1.column_1 as SIGNED)
, ma uno NULL
rimane uno NULL
.
e la coalesce può avere più di un valore? –
Sì ... quindi COALESCE (colonna1, colonna2, 0) restituirà il primo non null di questi valori. Ricorda che funziona in orizzontale, non in verticale. Le colonne devono appartenere alla stessa riga della tabella. –
@David: ben fatto. –