Подтвердить что ты не робот

MySQL Cast NULL для целого числа 0

Как мне сделать что-то, возвращающее NULL в 0?

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

Спасибо.

4b9b3361

Ответ 1

Вероятно, вы захотите использовать функцию 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)

Ответ 2

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