select id,status
from request
上述查询的status列返回一些整数值。我需要设置一个条件来返回一些字符串值而不是整数值。
例如:如果状态1然后它应该返回“新”或状态是2那么它应该返回“已批准”。
答案 0 :(得分:4)
使用案例陈述:
select
id,
case status
when 1 then 'New'
when 2 then 'Approved'
end as status
from
request
虽然我建议你有一个包含数字的查找表和状态值的相应文本字符串。
select
req.id,
stat.value as status
from
request as req inner join status as stat
on req.status = stat.id
答案 1 :(得分:3)
您可以{/ 3}}使用
select id,
case status
when 1 then 'New'
when 2 then 'Approved'
end as statusText
from request
答案 2 :(得分:1)
select id, case when status = 1 then 'NEW' when status = 2 then 'Approved' else 'Undefined' end as status
from request
答案 3 :(得分:1)
我鄙视存储在表格中的神秘整数值,而不知道它们的含义。
我的解决方案需要更多的工作,但从长远来看,这是值得的。
首先创建一个StatusValues的新表:
StatusValues
------------
Status INT PRIMARY KEY
StatusValue VARCHAR(20)
填充该表:
Status StatusValue
------ -----------
1 New
2 Approved
创建从Request表到此表的外键关系:
ALTER TABLE request
ADD CONSTRAINT FK_Request_StatusValues FOREIGN KEY (status)
REFERENCES StatusValues (status);
最后,编写查询:
SELECT r.id, sv.StatusValue
FROM request r
INNER JOIN StatusValues sv
ON r.status = sv.status;
以前神秘的request.status
列现已在数据库中进行了详细记录和管理。
答案 4 :(得分:0)
我不确定SQL Server的确切语法......
但是这里是你可以用于mySQL的语法(一个变体适合你):
注意:这假设只有两个选择 - 如果有更多选择,请使用case关键字。
select id, if(status = 1, "New", "Approved) from request