Ответ 1
Попробуйте:
SELECT ISNULL([Row 1], 0) - ISNULL([Row 2], 0) from YourTable
Для получения дополнительной информации посетите ISNULL
У меня есть эта таблица (сделанная из SQL-запроса):
Row 1 Row 2
2 1
3 NULL
И я хочу минус 2 столбца, поэтому я просто выбираю так:
Select Row1 - Row2
From table
Но тогда я получаю этот результат:
1
NULL
вместо:
1
3
Как я могу получить последний результат?
Попробуйте:
SELECT ISNULL([Row 1], 0) - ISNULL([Row 2], 0) from YourTable
Для получения дополнительной информации посетите ISNULL
Причина, по которой вы получили это, состоит в том, что Любая математическая операция с NULL производит NULL. Таким образом, при выполнении операции все значения следует читать как NULL = 0.
С ISNULL()
Следовательно
SELECT ISNULL([Row 1], 0) - ISNULL([Row 2], 0) from YourTable
MySQL, эквивалентный ISNULL, является IFNULL
Если expr1 не NULL, IFNULL() возвращает expr1; в противном случае возвращается expr2.
Может также взглянуть на функции SQL NULL
ISNULL из MySQL используется, чтобы проверить, является ли значение пустым
Если expr равен NULL, ISNULL() возвращает 1, в противном случае возвращает 0.
в sql все, что минус с NULL, то это всегда NULL, поэтому вам нужно преобразовать NULL в ноль
SELECT ISNULL(ROW1,0)-ISNULL(ROW2,0) FROM YOUR_TABLE