我的表格中有一个带有int值的status列。如何为int赋值,还是必须在表中创建一个新列?
我试图更改表,但是最好的方法是什么?
select status from table1;
如果我运行上面的查询,我们得到-
id status
1 1
2 2
3 1
4 5
我要输出-
id status
1 Accepted
2 Completed
3 Accepted
4 Declined
答案 0 :(得分:1)
您可以使用案例,请参阅此SO问题 PostgreSQL CASE ... END with multiple conditions。查询将如下所示:
SELECT
id,
CASE
WHEN (status = 1) THEN 'Accepted'
WHEN status=2 then 'Completed'
WHEN status=3 then 'Accepted'
WHEN sttaus=4 then 'Declined'
END AS status
FROM table1 ;
答案 1 :(得分:1)
使用case expression,postgres
select status,
case
when status=1 then 'Accepted'
when status=2 then 'Completed'
when status=3 then 'Accepted'
when sttaus=4 then 'Declined'
end mystatus
from table1;
答案 2 :(得分:1)
正确的case
表达式为:
select id,
(case status
when 1 then 'Accepted'
when 2 then 'Completed'
when 5 then 'Declined'
end) as status
from table1;
您还可以通过联接到派生表来做到这一点:
select t1.id, v.status
from table1 t1 left join
(value (1, 'Accepted'), (2, 'Completed'), (5, 'Declined')
) v(status_int, status)
on t1.status = v.status_int;
之所以这样说是因为您可能应该有一个有关状态值的参考表。在这种情况下,将在查询中动态创建参考表。但是它可能应该是数据库中的真实表。