sql >> Databáze >  >> RDS >> Mysql

Aktualizace SQL, pokud není nulová

Můžete použít case výrazy pro toto. Myslím, že logika, kterou chcete, je:

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;

Nebo pokud chcete aktualizovat e-mail a heslo, pokud obojí nejsou null pak:

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;

Nyní byla otázka aktualizována a chápu, že chcete aktualizaci provést pouze tehdy, pokud jsou parametry e-mailu a hesla nejsou prázdné řetězce. Takže vlastně chcete filtrování . Řekl bych to takto:

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

Nebo pokud chcete oddělit logiku pro oba parametry:

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;


  1. Rozdělení řetězce odděleného čárkami v PL/SQL uloženém proc

  2. JPA 2.0 Oracle DATE má nulový čas

  3. 2 způsoby, jak vrátit řádky, které obsahují pouze alfanumerické znaky v PostgreSQL

  4. Změňte tabulku pro úpravu výchozí hodnoty sloupce