我正在将临时表 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)
会起作用。哪个最好?
最佳答案
处理空格(即空字符串)时,则使用 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
关于sql - 合并语句: Don't update blank field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13268170/