Du kan använda case
uttryck för detta. Jag tror att logiken du vill ha är:
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 om du vill uppdatera e-post och lösenord om båda är inte null
sedan:
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 har frågan uppdaterats och jag förstår att du vill utföra uppdateringen om och bara om både e-post och lösenord parametrar är inte tomma strängar. Så du vill faktiskt ha filtrering . Jag skulle formulera detta som:
UPDATE users
SET username = Param1, email = Param2, password = Param3
WHERE id = Param4 and Param2 <> '' and Param3 <> ''
Eller om du vill separera logiken för båda parametrarna:
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;