Du kan bruge case
udtryk for dette. Jeg tror, at den logik, du ønsker, er:
UPDATE users
SET
username = Param1
email = case when email is not null then Param2 end,
password = case when password is not null then Param3 end
WHERE id = Param4;
Eller hvis du vil opdatere e-mail og adgangskode hvis begge er ikke null
derefter:
UPDATE users
SET
username = Param1
email = case when email is not null and password is not null then Param2 end,
password = case when email is not null and password is not null then Param3 end
WHERE id = Param4;
Nu blev spørgsmålet opdateret, og jeg forstår, at du vil udføre opdateringen, hvis og kun hvis både e-mail og adgangskode parametre er ikke tomme strenge. Så du vil faktisk have filtrering . Jeg vil formulere dette som:
UPDATE users
SET username = Param1, email = Param2, password = Param3
WHERE id = Param4 and Param2 <> '' and Param3 <> ''
Eller hvis du vil adskille logikken for begge parametre:
UPDATE users
SET
username = Param1,
email = case when Param2 <> '' then Param2 else email end,
password = case when Param3 <> '' then Param3 else password end
WHERE id = Param4;