Sie können case
verwenden Ausdrücke dafür. Ich denke, dass die Logik, die Sie wollen, ist:
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;
Oder wenn Sie E-Mail und Passwort aktualisieren möchten, wenn beides sind nicht null
dann:
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;
Jetzt wurde die Frage aktualisiert und ich verstehe, dass Sie die Aktualisierung durchführen möchten, wenn und nur wenn sowohl E-Mail- als auch Passwort-Parameter sind keine leeren Strings. Sie wollen also tatsächlich filtern . Ich würde das so formulieren:
UPDATE users
SET username = Param1, email = Param2, password = Param3
WHERE id = Param4 and Param2 <> '' and Param3 <> ''
Oder wenn Sie die Logik für beide Parameter trennen möchten:
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;