2

いくつかの変数が渡された単純な UPDATE を使用するストアド プロシージャがあります。しかし、変数がnullでない場合、これらのフィールドを更新したくありません。これは本質的に私の声明がどのように見えるかです。

UPDATE myTable
SET myColumn = @myColumn,
    mColumn1 = @myColumn1
WHERE myColumn2 = @myColumn2

SET内に条件付きロジックを適用する方法はありますか? チェックする必要があるフィールドが約 10 個あるので、フィールドごとに更新したり、そのようなことはしたくありません。

何か案は?

4

3 に答える 3

6

COALESCEあなたの友達です。最初の非 NULL 引数を返します。あなたの話から、あなたがどちらの方法で物事を望んでいるのか、実際にはわかりません。それは次のいずれかです。

UPDATE myTable
SET myColumn = COALESCE(myColumn,@myColumn),
    mColumn1 = COALESCE(myColumn1,@myColumn1)
WHERE myColumn2 = @myColumn2

列がnullでない場合、現在の列の値を保持するか、または

UPDATE myTable
SET myColumn = COALESCE(@myColumn,myColumn),
    mColumn1 = COALESCE(@myColumn1,myColumn1)
WHERE myColumn2 = @myColumn2

変数がnullの場合、現在の列の値を保持します。

于 2013-09-04T13:28:59.450 に答える
4

以下のように合体機能を使用してみてください

UPDATE myTable
SET myColumn = coalesce(myColumn,@myColumn),
    mColumn1 = coalesce(mColumn1,@myColumn1)
WHERE myColumn2 = @myColumn2

上記のコードは、列が null の場合にのみ列を更新します。それらが null でない場合、コードは列に格納されているのと同じ値を設定します。

于 2013-09-04T13:28:19.850 に答える
1

ISNULL (変数、デフォルト値が null の場合)

情報

于 2013-09-04T13:28:01.560 に答える