Подтвердить что ты не робот

Хранимая процедура SQL: если переменная не равна null, оператор update

У меня есть инструкция update в хранимой процедуре, которая выглядит в целом так:

Update [TABLE_NAME]
Set [email protected]

Есть ли хороший способ только запускать оператор update, если переменная не равна null или значение -1?

Как и вопрос IF NOT EXISTS...INSERT.

Большое вам спасибо.

4b9b3361

Ответ 2

Другой подход, когда у вас много обновлений, будет использование COALESCE:

UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET    
    [ABC]  = COALESCE(@ABC, [ABC]),
    [ABCD] = COALESCE(@ABCD, [ABCD])

Ответ 3

Еще один подход - ISNULL().

UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET    
    [ABC]  = ISNULL(@ABC, [ABC]),
    [ABCD] = ISNULL(@ABCD, [ABCD])

Разница между ISNULL и COALESCE - это тип возврата. COALESCE также может принимать более двух аргументов и использовать первый, который не является нулевым. То есть.

select COALESCE(null, null, 1, 'two') --returns 1
select COALESCE(null, null, null, 'two') --returns 'two'