Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL if not null update

I have this query

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

this is updating my user row, but i want to say: If email OR password is not null update them otherwise let them be as they are.

What should my query be like then?

UPDATE

By friends codes below I realized now that my form sent empty string '' and not null so I think I need to check if my password is not '' and if my email is not '' instead of if it's not null.

About logic

I think some misunderstood me by my question,

I'd like my values of columns email and password change if i send new values trough my form,

If i didn't fill for instance my email input in my form then my email in database doesn't need to be change (updated).

So just update each column in case their value is not empty string.

like image 934
mafortis Avatar asked Dec 19 '25 21:12

mafortis


1 Answers

Like this

UPDATE users 
SET 
  username = Param1,
  email = COALESCE(Param2, email),
  password = COALESCE(Param3, password)
WHERE id = Param4;

COALESCE works from left to right taking the first non null argument. If you provide null as Param2, it will update email to email (no change). If you provide a value to Param2, coalesce will return that non null value so email is updated to whatever param2 is

Ps: understood your request to be "I will provide either a null or a value in the parameter. If I provide a null I don't want to update the db table. If I provide a value I do want to update the DB table"

This seemed more logical to me than how your question reads which is "if my table value is null for email then I forever want it to remain null and never want any of the values I supply in the parameters to be written to the table"

like image 100
Caius Jard Avatar answered Dec 21 '25 13:12

Caius Jard