我有一个名为course
的表,它有两列topic
和status
..
表格中有三行..
('Computer','A')
('Science','I')
('History','A')
显示表格中的值时,我想为Active
显示A
,为Inactive
显示I
..我该怎么做...请帮助我这里。
答案 0 :(得分:2)
SELECT topic,
CASE status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
END
FROM course
WHERE condition;
对于一般case语句语法。
答案 1 :(得分:2)
另一个答案都指出了查询的正确方法。这个答案是解释你如何直接“烘焙”到表中。也就是说,您可以在字段中存储'A'
和'I'
,但可以检索'Active'
和'Inactive'
。
为此,我将表中的列重命名为`_status':
第一种方法是使用视图:
create view vw_table as
select <other columns>,
(case when _status = 'A' then 'Active'
when _status = 'I' then 'Inactive'
end) as status
from t;
然后,您的应用程序代码始终使用该视图,并确保您所需的状态。在SQL Server中,您还可以在表定义中添加计算列:
alter table
add column status as (case when _status = 'A' then 'Active'
when _status = 'I' then 'Inactive'
end);
使用视图或计算列的优点是拼写和定义始终相同。
最后,通常您希望将这些字符串转换为引用表。在这种情况下,您实际上在原始表中有statusID
,status
表具有真实定义。对于具有明确定义的二进制值,这可能是过度的。另一方面,如果您正在学习SQL,这可能是学习创建引用表(并进一步规范化数据结构)的好机会。
答案 2 :(得分:1)
SELECT Topic,
CASE Status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
-- ELSE '' -- only if you need it
END AS [Status]
FROM course
答案 3 :(得分:1)
尝试CASE声明
select topic,
case status when 'A' Then 'Active' WHen 'I' Then 'Inactive' END Status
from table
答案 4 :(得分:1)
您可以使用CASE
:
SELECT ...,
CASE ... WHEN ... THEN 'Active' ELSE 'Inactive'
...
FROM table