2010-10-31 18 views
18

Come posso trasmettere qualcosa che restituisce NULL a 0?MySQL Trasmetti NULL all'intero 0

Se questa è la mia domanda: select col from table; questo sarebbe il modo giusto per farlo: select cast(col as unsigned integer) from table;?

Grazie.

risposta

40

si sarebbe probabilmente desidera utilizzare la funzione COALESCE():

SELECT COALESCE(col, 0) FROM `table`; 

COALESCE() restituisce il primo valore di NULL non nella lista, o NULL se non ci sono non NULL valori.

caso

prova:

CREATE TABLE `table` (id int, col int); 

INSERT INTO `table` VALUES (1, 100); 
INSERT INTO `table` VALUES (2, NULL); 
INSERT INTO `table` VALUES (3, 300); 
INSERT INTO `table` VALUES (4, NULL); 

Risultato:

+------------------+ 
| COALESCE(col, 0) | 
+------------------+ 
|    100 | 
|    0 | 
|    300 | 
|    0 | 
+------------------+ 
4 rows in set (0.00 sec) 
+0

Grazie, Daniel! – Francisc

2

È anche possibile utilizzare la funzione IFNULL():

SELECT IFNULL(col, 0) FROM `table`; 

IFNULL(expr1, expr2) restituisce la prima espressione se è non nullo, altrimenti restituisce la seconda espressione. caso

prova:

CREATE TABLE `table` (id int, col int); 

INSERT INTO `table` VALUES (1, 100); 
INSERT INTO `table` VALUES (2, NULL); 
INSERT INTO `table` VALUES (3, 300); 
INSERT INTO `table` VALUES (4, NULL); 

Risultato:

+----------------+ 
| IFNULL(col, 0) | 
+----------------+ 
|   100 | 
|    0 | 
|   300 | 
|    0 | 
+----------------+ 
4 rows in set (0.00 sec)