2010-10-31 5 views
18

NULL değerini 0'a döndüren bir şeyi nasıl yapabilirim?MySQL Cast NULL tamsayı 0

Bu benimki sorgunuz buysa: select col from table; Bunu yapmanın doğru yolu bu olurdu: select cast(col as unsigned integer) from table;?

Teşekkür ederiz.

cevap

40

Muhtemelen COALESCE() fonksiyonunu kullanmak isteyeceğinizi:

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

COALESCE() döner olmayan ilk NULL listesindeki değeri veya NULL hiçbir olmayan NULL amaç yokmuş.

Test durumda:

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); 

Sonuç: öyle değil null, başka döner eğer

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

IFNULL(expr1, expr2) ilk ifadeyi verir:

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

, Daniel teşekkür ederiz! – Francisc

2

Ayrıca IFNULL() işlevini kullanabilirsiniz ikinci ifade.

Test durumda:

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); 

Sonuç:

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