case
を使用できます このための式。あなたが望む論理は次のとおりだと思います:
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;
または、両方の場合、メールアドレスとパスワードを更新する場合 null
ではありません 次に:
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;
質問が更新されました。メールとパスワードの両方のパラメータの場合にのみ、更新を実行する必要があることを理解しています。 空の文字列ではありません。したがって、実際にはフィルタリングが必要です。 。私はこれを次のように言います:
UPDATE users
SET username = Param1, email = Param2, password = Param3
WHERE id = Param4 and Param2 <> '' and Param3 <> ''
または、両方のパラメータのロジックを分離する場合:
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;