MySQL Cast NULL для целого числа 0
Как мне сделать что-то, возвращающее NULL в 0?
Если это мой запрос: select col from table;
это будет правильным способом: select cast(col as unsigned integer) from table;
?
Спасибо.
Ответы
Ответ 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)