0

我有一个名为的表course,它有两列topicstatus..

表中有三行..

('Computer','A')
('Science','I')
('History','A')

当显示表中的值时,我想为Active..A和.. 我该怎么做...请在这里帮助我。InactiveI

4

5 回答 5

2
SELECT topic, 
       CASE status                     
         WHEN  'A' THEN 'Active'
         WHEN  'I' THEN 'Inactive'
       END
FROM course 
WHERE condition;

对于一般case语句语法。

于 2013-08-11T14:41:10.470 回答
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,这可能是学习创建引用表(并进一步规范化您的数据结构)的好机会。

于 2013-08-11T14:52:44.487 回答
1
SELECT Topic, 
    CASE Status  
        WHEN 'A' THEN 'Active' 
        WHEN 'I' THEN 'Inactive' 
        -- ELSE '' -- only if you need it
    END AS [Status]
FROM course 
于 2013-08-11T14:41:30.577 回答
1

试试 CASE 语句

select topic, 
case status when 'A' Then 'Active' WHen 'I' Then 'Inactive' END Status
from table
于 2013-08-11T14:41:33.517 回答
1

您可以使用CASE

SELECT ...,
  CASE ... WHEN ... THEN 'Active' ELSE 'Inactive'
  ...
FROM table
于 2013-08-11T14:41:49.447 回答