MySQL将NULL转换为整数0

Fra*_*isc 22 mysql integer casting

如何将返回NULL的内容转换为0?

如果这是我的问题:select col from table;这是否是正确的方法:select cast(col as unsigned integer) from table;

谢谢.

Dan*_*llo 45

您可能想要使用该COALESCE()功能:

SELECT COALESCE(col, 0) FROM `table`;
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

结果:

+------------------+
| COALESCE(col, 0) |
+------------------+
|              100 |
|                0 |
|              300 |
|                0 |
+------------------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)


Mik*_*ser 9

您还可以使用该IFNULL()功能:

SELECT IFNULL(col, 0) FROM `table`;
Run Code Online (Sandbox Code Playgroud)

IFNULL(expr1, expr2) 如果它不为空,则返回第一个表达式,否则返回第二个表达式。

测试用例:

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);
Run Code Online (Sandbox Code Playgroud)

结果:

+----------------+
| IFNULL(col, 0) |
+----------------+
|            100 |
|              0 |
|            300 |
|              0 |
+----------------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)