Ответ 1
Используйте T-SQL IF
:
IF @ABC IS NOT NULL AND @ABC != -1
UPDATE [TABLE_NAME] SET [email protected]
Взгляните на документы MSDN.
У меня есть инструкция update в хранимой процедуре, которая выглядит в целом так:
Update [TABLE_NAME]
Set [email protected]
Есть ли хороший способ только запускать оператор update, если переменная не равна null или значение -1?
Как и вопрос IF NOT EXISTS...INSERT
.
Большое вам спасибо.
Используйте T-SQL IF
:
IF @ABC IS NOT NULL AND @ABC != -1
UPDATE [TABLE_NAME] SET [email protected]
Взгляните на документы MSDN.
Другой подход, когда у вас много обновлений, будет использование COALESCE:
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = COALESCE(@ABC, [ABC]),
[ABCD] = COALESCE(@ABCD, [ABCD])
Еще один подход - 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'