MERGE DestinationTable AS D
USING SourceTable AS S
ON D.Alternate_ID = S.ID
WHEN MATCHED AND
(
D.ID <> S.ID
OR D.col1 <> S.col1
OR D.col2 <> S.col2
OR D.col3 <> S.col3
OR D.col4 <> S.col4
OR D.col5 <> S.col5
OR D.col6 <> S.col6
OR D.col7 <> S.col7
OR D.col8 <> S.col8
)
Привет всем, я пытаюсь обновить DestinationTable, если какое-либо значение столбца в SourceTable было изменено с помощью вышеприведенного фрагмента инструкции Merge.Сравнение NULL со строками в SQL Server
Однако, если у меня есть значение NULL в столбце назначения и строка или значение бита в источнике, сравнение D.col8 <> S.col8
вернет false из-за того, как SQL обрабатывает сравнения со значениями NULL. В результате DestinationTable не обновляется новыми значениями из SourceTable.
Каков наилучший способ справиться с этой проблемой. Если D.Col8 является NULL, а S.Col8 имеет строку или значение бита, я все равно хочу вернуть значение true для выражения, например D.col8 <> S.col8
SO, если у меня есть значение «Test» в S.Col8 и NULL в D.Col8, я хочу, чтобы обновить столбец назначения от NULL в "Test"
Выполняет обновление, если никакие столбцы не на самом деле * не изменили измеримую стоимость, которую вам нужно устранить? –
d.col8 не является нулевым и d.col8 <> s.col8 – DwB
@Damien_The_Unbeliever, Да, это желательно. – StackTrace