2010-10-31 40 views
18

Làm cách nào tôi có thể truyền thứ gì đó trả về NULL thành 0?MySQL Cast NULL thành số nguyên 0

Nếu đây là truy vấn của tôi: select col from table; đây có phải là cách phù hợp để thực hiện: select cast(col as unsigned integer) from table;?

Cảm ơn bạn.

Trả lời

40

Bạn có thể muốn sử dụng chức năng COALESCE():

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

COALESCE() trả về giá trị NULL phi đầu tiên trong danh sách, hoặc NULL nếu không có NULL giá trị phi.

trường hợp

Test:

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

Kết quả:

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

Cảm ơn bạn, Daniel! – Francisc

2

Bạn cũng có thể sử dụng IFNULL() chức năng:

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

IFNULL(expr1, expr2) trả về biểu hiện đầu tiên nếu nó không phải null, lợi nhuận khác biểu thức thứ hai. trường hợp

Test:

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

Kết quả:

+----------------+ 
| IFNULL(col, 0) | 
+----------------+ 
|   100 | 
|    0 | 
|   300 | 
|    0 | 
+----------------+ 
4 rows in set (0.00 sec) 
Các vấn đề liên quan