Mysql
 sql >> Database >  >> RDS >> Mysql

SQL se non aggiornamento nullo

Puoi usare case espressioni per questo. Penso che la logica che vuoi sia:

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;

O se vuoi aggiornare email e password se entrambi non sono null quindi:

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;

Ora la domanda è stata aggiornata e ho capito che vuoi eseguire l'aggiornamento se e solo se sia i parametri della password che dell'email non sono stringhe vuote. Quindi vuoi effettivamente filtrare . Direi questo come:

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

Oppure se vuoi separare la logica per entrambi i parametri:

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;