Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL se não atualização nula


Você pode usar case expressões para isso. Acho que a lógica que você quer é:
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;

Ou se você deseja atualizar e-mail e senha se ambos não são null então:
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;

Agora a pergunta foi atualizada e entendo que você deseja realizar a atualização se e somente se e-mail e senha parâmetros não são strings vazias. Então você realmente quer filtrar . Eu expressaria isso como:
UPDATE users 
SET username = Param1, email = Param2, password = Param3 
WHERE id = Param4 and Param2 <> '' and Param3 <> ''

Ou se você quiser separar a lógica para ambos os parâmetros:
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;