sql >> Database >  >> RDS >> Mysql

SQL indien niet null update

U kunt case . gebruiken hiervoor uitingen. Ik denk dat de logica die je zoekt 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;

Of als u uw e-mailadres en wachtwoord wilt bijwerken als beide zijn niet null dan:

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;

Nu is de vraag bijgewerkt en ik begrijp dat u de update wilt uitvoeren als en alleen als zowel e-mail als wachtwoord parameters zijn geen lege strings. Dus je wilt eigenlijk filteren . Ik zou dit formuleren als:

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

Of als u de logica voor beide parameters wilt scheiden:

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. Kolom bijwerken met willekeurige waarde

  2. Voorwaarde uit twee kolommen combineren mysql

  3. vakbondsclausule in sql

  4. verkeerd aantal of soorten argumenten tijdens het aanroepen van Stored Proc