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 回答