如何将返回NULL的内容转换为0?
如果这是我的问题:select col from table;
这是正确的做法:select cast(col as unsigned integer) from table;
?
谢谢。
答案 0 :(得分:44)
您可能想要使用COALESCE()
功能:
SELECT COALESCE(col, 0) FROM `table`;
COALESCE()
会返回列表中的第一个非NULL
值,如果没有非NULL
值,则返回NULL
。
测试用例:
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);
结果:
+------------------+
| COALESCE(col, 0) |
+------------------+
| 100 |
| 0 |
| 300 |
| 0 |
+------------------+
4 rows in set (0.00 sec)
答案 1 :(得分:3)
您还可以使用IFNULL()
功能:
SELECT IFNULL(col, 0) FROM `table`;
IFNULL(expr1, expr2)
返回第一个表达式,如果它不为null,则返回第二个表达式。
测试用例:
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);
结果:
+----------------+
| IFNULL(col, 0) |
+----------------+
| 100 |
| 0 |
| 300 |
| 0 |
+----------------+
4 rows in set (0.00 sec)