我正在从临时表t
向主表ts
执行MERGE语句,在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)
都可以。哪个最好?
答案 0 :(得分:1)
处理空白时(即空字符串),然后使用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),
如果它可以为空或空,则可以在案例陈述
中处理WHEN MATCHED THEN UPDATE
SET case when t.username = '' or t.username is null then ts.username else t.username end