У меня есть запрос, который обновляет поле в моей таблице. Может быть так, что столбец, который нужно обновить, может быть NULL, если я хочу добавить 1 в эту ячейку. В противном случае я хотел бы добавить 1 к текущему значению этого поля.

UPDATE SET Scheduled = Scheduled + 1

Будет работать, за исключением случаев, когда ячейка имеет NULL в качестве значения, она не добавляет значение 1.

1
UserSN 3 Мар 2018 в 21:03

4 ответа

Лучший ответ

Вы можете использовать это.

UPDATE table SET Scheduled = ISNULL(Scheduled,0) + 1
3
Serkan Arslan 3 Мар 2018 в 18:13

Вы можете использовать выражение CASE:

UPDATE table_name
SET Scheduled = CASE WHEN Scheduled IS NULL THEN 1
                     ELSE Scheduled + 1
                END
WHERE ...;
3
Lukasz Szozda 3 Мар 2018 в 18:07

Хотя вы можете легко сделать это в update:

update t
    set scheduled = coalesce(scheduled + 1, 1)
    where . . .;

Я бы предложил устранить необходимость в этом, установив значение по умолчанию на 0. Я подозреваю, что это будет иметь смысл в вашем контексте. Если у вас есть данные в таблице:

update t
    set scheduled = 0
    where scheduled is null;

alter table t alter scheduled int not null default 0;

(Примечание: вы также можете использовать with values в изменении, но update ясно показывает намерение.)

3
Gordon Linoff 3 Мар 2018 в 18:19

Обновите yourTable set yourColumn = (coalesce (yourColumn, 0) +1)

Или вы можете использовать

Обновите yourTable set yourColumn = (nullif (yourColumn, 0) +1)

0
SevincQurbanova 3 Мар 2018 в 19:00