Member 11856456 Ответов: 1

Как я могу использовать оператор merge, чтобы только заменить значения null или пустые поля


Я пытаюсь использовать приведенную ниже инструкцию только для обновления пустых или пустых полей. Прямо сейчас способ его настройки заключается в том, что если он совпадает, то до даты совпадения поля, независимо от того, является ли оно пустым или нулевым.

Merge into table1 as T
using [table] as S
on T.[Last Name] = S.[Last Name] and T.[First Name] = S.[First Name]

When Matched then 
Update Set T.[middle name] = S.[middle];


Если есть простой способ получить этот результат, я был бы рад его увидеть.

Что я уже пробовал:

пытался использовать t.[второе имя] равно нулю, но оно работает не совсем так, как я хочу.

Oshtri Deka

Пожалуйста, объясните, почему это не работает?

1 Ответов

Рейтинг:
8

Oshtri Deka

Попробовать это:

Merge into table1 as T
using [table] as S
on T.[Last Name] = S.[Last Name] and T.[First Name] = S.[First Name]
and (T.[middle name] is null or TRIM(T.[middle name]) = '')
 
When Matched then 
Update Set T.[middle name] = S.[middle];


CHill60

Думаю, я бы предпочел ... and TRIM(ISNULL(T.[middle name],'')) = '' к тому, что скобки OR часто пропускаются при смешивании ANDs и ORs

Oshtri Deka

Действительно, ваш подход более лаконичен.
Когда дело доходит до скобок, каждый программист должен обратить на это внимание.