简体   繁体   中英

How to replace all non-zero values from column in select?

I need to replace non-zeros in column within select statement.

SELECT Status, Name, Car from Events;

I can do it like this:

SELECT (Replace(Status, '1', 'Ready'), Name, Car from Events;

Or using Case/Update.

But I have numbers from -5 to 10 and writing Replace or something for each case is not good idea.

How can I add comparasing with replace without updating database?

Table looks like this:

Status     Name    Car 
0          John    Porsche
1          Bill    Dodge
5          Megan   Ford
SELECT IF(status =1, 'Approved', 'Pending') FROM TABLENAME

The standard method is to use case :

select t.*,
       (case when status = 1 then 'Ready'
             else 'Something else'
        end) as status_string
from t;

I would instead recommend, though, that you have a status reference table:

create table statuses (
    status int primary key,
    name varchar(255)
);

insert into statuses (status, name)
    values (0, 'UNKNOWN'),
           (1, 'READY'),
           . . .  -- for the rest of the statuses

Then use JOIN :

select t.*, s.name
from t join
     statuses s
     on t.status = s.status;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM