SQL if not null update

前端 未结 5 1757
忘掉有多难
忘掉有多难 2021-01-26 03:18

I have this query

UPDATE users SET username = Param1,email = Param2,PASSWORD = Param3 WHERE id = Param4;

this is updating my user row, but

5条回答
  •  醉酒成梦
    2021-01-26 03:49

    If email OR password is not null update them otherwise let them be as they are.

    You can use case expressions for this. I think that the logic you want is:

    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;
    

    Or if you want to update email and password if both are not null then:

    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;
    

    Now the question was updated and I understand that you want to perform the update if and only if both email and password parameters are not empty strings. So you actually want filtering. I would phrase this as:

    UPDATE users 
    SET username = Param1, email = Param2, password = Param3 
    WHERE id = Param4 and Param2 <> '' and Param3 <> ''
    

    Or if you want to separate the logic for both parameters:

    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;
    

提交回复
热议问题