Это обычное поведение.Ваш запрос на обновление всегда влияет на все строки, и оператор switch возвращает Null
, если не выполняется ни одно из условий.
Вам следует отфильтровать строки, на которые вы хотите повлиять:
Update Insurance Set [SellPrice]=SWITCH
([Cover]=50, 4.2,
[Cover]=100, 5.4,
[Cover]=200, 6.8)
WHERE Cover IN (50,100,200)
В качестве альтернативы,вы можете заставить оператор SWITCH
возвращать текущее значение, если не выполняется ни одно из условий:
Update Insurance Set [SellPrice]=SWITCH
([Cover]=50, 4.2,
[Cover]=100, 5.4,
[Cover]=200, 6.8,
True, SellPrice)
Однако это, вероятно, будет иметь худшую производительность и приведет к большему количеству блокировок.