Вот мой запрос:
UPDATE qanda SET amount = amount + 1000 WHERE id = ? AND type = 0;
amount
столбцов по умолчанию равно null
, и когда я выполняю запрос выше, ничего не происходит. Как я могу исправить проблему? Наверное, мне нужно кастинг.
Стандартная функция ANSI - COALESCE()
:
UPDATE qanda
SET amount = COALESCE(amount, 0) + 100
WHERE id = ? AND type = 0;
В некоторых базах данных есть и другие тайные функции, чтобы сделать то же самое. , , nz()
, ifnull()
, nvl()
, например. Придерживайтесь стандартных, когда сможете.
Я должен отметить, что вы могли бы исправить эту "проблему" по-другому. Когда вы определяете столбец, дайте ему значение по умолчанию:
create table quanda (
. . .
amount int not null default 0
. . .
);
Это гарантирует, что NULL
никогда не будет в столбце.
Вы можете попробовать функцию IFNULL(). Он вернется
UPDATE qanda SET amount = ifnull(amount,0) + 1000 WHERE id = ? AND type = 0;
UPDATE qanda SET amount = nvl (количество, 0) + 1000 WHERE id =? AND type = 0;
COALESCE(amount, 0)