MySQL приведение NULL к целому числу 0 - PullRequest
21 голосов
/ 31 октября 2010

Как я могу разыграть что-то, что возвращает NULL в 0?

Если это мой запрос: select col from table; это будет правильный способ сделать это: select cast(col as unsigned integer) from table;?

Спасибовы.

Ответы [ 2 ]

44 голосов
/ 31 октября 2010

Возможно, вы захотите использовать функцию 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)
3 голосов
/ 24 августа 2017

Вы также можете использовать функцию IFNULL():

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

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

Результат:

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