ストアドプロシージャには、一般的に次のような更新ステートメントがあります。
Update [TABLE_NAME]
Set XYZ=@ABC
変数がnullまたは値-1でない場合にのみ更新ステートメントをトリガーする良い方法はありますか?
IF NOT EXISTS...INSERT
質問。
どうもありがとうございます。
T-SQL IF
を使用します。
IF @ABC IS NOT NULL AND @ABC != -1
UPDATE [TABLE_NAME] SET XYZ=@ABC
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は3つ以上の引数を取り、null以外の最初の引数を使用することもできます。つまり.
select COALESCE(null, null, 1, 'two') --returns 1
select COALESCE(null, null, null, 'two') --returns 'two'