私は、一般的に次のようになりますストアドプロシージャで更新ステートメントを持っている:SQL:変数がNULLでない場合、更新ステートメント
Update [TABLE_NAME]
Set [email protected]
は場合にのみ更新文をトリガするための良い方法はあります変数がnullでも値-1でもない
IF NOT EXISTS...INSERT
と似ています。
ありがとうございました。
私は、一般的に次のようになりますストアドプロシージャで更新ステートメントを持っている:SQL:変数がNULLでない場合、更新ステートメント
Update [TABLE_NAME]
Set [email protected]
は場合にのみ更新文をトリガするための良い方法はあります変数がnullでも値-1でもない
IF NOT EXISTS...INSERT
と似ています。
ありがとうございました。
は、T-SQL IF
を使用します。
IF @ABC IS NOT NULL AND @ABC != -1
UPDATE [TABLE_NAME] SET [email protected]
はMSDN docsを見てみましょう。あなたは多くの更新がある場合
別のアプローチは、COALESCEを使用することです:
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = COALESCE(@ABC, [ABC]),
[ABCD] = COALESCE(@ABCD, [ABCD])
これは、私が頭を机の中に打ち込もうとしていたことです。数十の列が関わっているときには、「もし更新された」ペアの束よりもずっと見栄えが良い。 – Herb
どうもありがとうございます。 –
さらに別のアプローチは、ISNULL(あります)。
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = ISNULL(@ABC, [ABC]),
[ABCD] = ISNULL(@ABCD, [ABCD])
ISNULLとCOALESCEの違いは戻り値の型です。 COALESCEは2つ以上の引数を取ることができ、最初のものはnullではないものを使用します。私。
select COALESCE(null, null, 1, 'two') --returns 1
select COALESCE(null, null, null, 'two') --returns 'two'
これは簡単ですか?さて、私は電気ソケットにフォークをつけて、アトランティックシティの裏通りや他の馬鹿なものから汚い針をつけるつもりです。ご協力ありがとうございました。 – Jake
@ジェイク、心配はいりません。私たちはすべて私たちの日を持っています。ところで、StackOverflowへようこそ! –