2

t一時テーブルからメイン テーブルにMERGE ステートメントを実行tsし、ID フィールドで照合しています。次の内容が含まれます。

WHEN MATCHED THEN UPDATE
   SET ts.username = t.username, ts.password = t.password, ts.title = t.title, ts.firstname = t.firstname, ts.surname = t.surname, ts.email = t.email

ユーザー名とパスワードが一時テーブルtで空白の場合、メイン テーブルを更新したくありませんts。これどうやってするの?

CASE編集:ステートメントのように見えるか、使用COALESCE(NULLIF(t.username, ''), ts.username)すると機能します。どれが最高ですか?

4

1 に答える 1

2

空白 (空の文字列) を扱うときは、case ステートメントを使用します。

WHEN MATCHED THEN UPDATE
   SET case when t.username = '' then ts.username else t.username end

null を扱っている場合は、isnull を使用します

WHEN MATCHED THEN UPDATE
   SET ts.username = isnull(t.username, ts.username),

空白または null のいずれかである場合は、case ステートメントで両方を処理できます。

WHEN MATCHED THEN UPDATE
   SET case when t.username = '' or t.username is null then ts.username else t.username end
于 2012-11-07T10:55:57.533 に答える