我有一个名为的表course
,它有两列topic
和status
..
表中有三行..
('Computer','A')
('Science','I')
('History','A')
当显示表中的值时,我想为Active
..A
和.. 我该怎么做...请在这里帮助我。Inactive
I
我有一个名为的表course
,它有两列topic
和status
..
表中有三行..
('Computer','A')
('Science','I')
('History','A')
当显示表中的值时,我想为Active
..A
和.. 我该怎么做...请在这里帮助我。Inactive
I
SELECT topic,
CASE status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
END
FROM course
WHERE condition;
对于一般case语句语法。
另一个答案都指出了查询的正确方法。这个答案是为了解释如何将它直接“烘焙”到表格中。也就是说,您可以在字段中存储'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,这可能是学习创建引用表(并进一步规范化您的数据结构)的好机会。
SELECT Topic,
CASE Status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
-- ELSE '' -- only if you need it
END AS [Status]
FROM course
试试 CASE 语句
select topic,
case status when 'A' Then 'Active' WHen 'I' Then 'Inactive' END Status
from table
您可以使用CASE
:
SELECT ...,
CASE ... WHEN ... THEN 'Active' ELSE 'Inactive'
...
FROM table