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)
Ответ 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)